1
ifoolish 2018-08-02 13:59:07 +08:00 via iPhone
格式好乱……一般大家都会写个博客记录一下
|
2
H0TSp1RnG 2018-08-02 14:05:31 +08:00
正好遇到一个打包的问题 我在 mac 环境下打包 但是目标运行环境是 win10 的 应该怎么弄
|
3
OpenJerry 2018-08-02 14:15:52 +08:00 via Android
@H0TSp1RnG 用 windows 虚拟机打包吧,pyinstaller 好像不能跨平台打包
|
4
firejoke OP @ifoolish 最开始是 default 语法,预览的时候很好,发布后发现有一个写错了,就重新编辑了,结果就......
|
5
firejoke OP @H0TSp1RnG 看你的依赖库有没有像我这样的会有依赖的 txt 之类的文档,如果有,
就按我的这个方法,亲测可以在 win10 运行 |
6
firejoke OP |
8
shootsoft 2018-08-02 15:05:00 +08:00
|
9
xyfan 2018-08-02 16:32:59 +08:00
Pyinstaller 真的是大坑,pyqt 写了一个很小的程序,用-w 打包运行的时候报错,不用-w,带命令行运行就没问题,怎么也解决不了。(不是 std i/o 问题)
|
10
OpenJerry 2018-08-02 17:11:16 +08:00 via Android
所以帮身边小伙伴做一些小工具的时候,我宁愿用 go 写
|
11
firejoke OP |
12
waterlaw 2018-08-02 19:40:24 +08:00 via Android
我也遇到这个问题哎,qm 文件不会帮我打包。
|
13
waterlaw 2018-08-02 19:41:34 +08:00 via Android
还是用 c ++ 比较好, 打包后体积小
|
15
twistedmeadows 2018-08-02 20:21:42 +08:00 via Android
以为有什么高级经验。结果也是这种粗暴解法。
Python 就是这方面太不酷了,想跟小伙伴装个逼都装不了。 |
16
firejoke OP @waterlaw 应该还有更全的打包方法,不行就只有修改源码了
@shootsoft 那也是幸运了~ @twistedmeadows 哈哈哈~看情况来的嘛,如果没有特别的依赖文件之类的,就可以连着 QT 界面一起打包啊, 做个小游戏、小工具什么的也不是不可以啊~ |
17
XxxxD 2018-08-02 21:21:24 +08:00
打包成 exe 会很大么?
|
19
firejoke OP @XxxxD 连着环境一起打包成一个就会很大,可以用 UPX 压缩
@xyfan @waterlaw @twistedmeadows 各位,找到一个可以给打包添加路径的方法 http://ju.outofmemory.cn/entry/137370 |
20
weyou 2018-08-02 21:42:46 +08:00 via Android
@firejoke 打开 pyinstaller 生成的 spec 文件,你会发现有个搜索路径 pathex 可以设置,并且可以设置多个。
如果程序中有要运行时读取的文件( text,图片等非 import 的文件),pyinstaller 是找不到的,这时可以将路径放到 datas 列表中让 pyinstaller 打包进去, 其实这些 pyinstaller 自带的文档里都有明确的说明,楼主为什么不先读一遍呢 |
22
itskingname 2018-08-02 22:13:52 +08:00
@weyou 因为他们只会用百度搜索中文博客看。
|
23
firejoke OP @itskingname 好好说话不会吗, 自卑感好点了吗
|
24
firejoke OP @weyou 说的对,当时只想着可能是命令问题,一心去找别人的解决方法,没想到去看官方文档,
下次吸取教训, 我去试试能不能把 jieba 自带的 dict.txt 路径一起打进去 |
25
firejoke OP 最后,结合官方文档 https://pyinstaller.readthedocs.io/en/v3.3.1/spec-files.html
把 jieba 模块下的所有 txt 文档在 .spec 文件内加进去 形式: datas = [ ('XXX.txt_path', 'jieba' ),('analyse/XXX.txt_path', 'jieba/analyse'),('finalseg/XXX.p_path','jieba/finalseg'),......] (非.py 文档以路径 , 模块名), 或者(非.py , 模块名 /包名) 或者直接 datas = [ (‘ jieba','jieba' ) ] 这两个形式都可以 然后 pyinstaller name.spec 运行一下就 OK 了 |
26
VVTA 2019-04-16 17:52:19 +08:00
好久没来了.上来学习下哈.
|