发布工具
1. py2exe
2. pyinstaller
其他的没怎么看,这两个了解比较多。
在处理一些嵌套依赖时很沮丧,各种动态性较强的模块常常被遗漏很多。
还有一些耍酷的模块更让我受不了,比如tablib,他把2和3的代码混在一块,我用py2exe编译就无法通过。使用excludes排除3的部分后依然有依赖问题,无赖只好重写功能。
wsgi的功能模块难以打包,打包成exe后,各种崩溃(比如多线程问题)。我还只是简单地用bottle。于是我就放弃在windows上用web了,用qt重写了管理模块,qt的打包倒是蛮顺利,pyinstaller做了针对性的优化。
1
icylogic 2014-12-30 17:56:12 +08:00 1
我觉得你应该去问下 goagent 的开发者,貌似他解决了若干 py 打包坑
|
2
besto 2014-12-30 17:56:17 +08:00
...cx_freeze...
|
3
zaxaca 2014-12-30 18:12:28 +08:00
3个工具我都用过,目前固定使用cx_freeze
|
4
zackshen 2014-12-30 22:17:00 +08:00
简单的使用过pyinstaller挺不错的
|
5
jamiesun OP @zaxaca cx_freeze还没试,不过现在改变主意了,不折腾这些打包工具了,还是走标准发布路线。
直接用portablepython整个打包,做几个bat(包括自动升级批处理文件),除了发布包大了一点(压缩30M),没有什么缺点。 在研究tablib问题时,发现原来是setup.py中有设置: if sys.version_info[0] == 2: packages.extend([ 'tablib.packages.xlwt', 'tablib.packages.xlrd', 'tablib.packages.odf', 'tablib.packages.openpyxl', 'tablib.packages.openpyxl.shared', 'tablib.packages.openpyxl.reader', 'tablib.packages.openpyxl.writer', 'tablib.packages.yaml', 'tablib.packages.dbfpy' ]) else: packages.extend([ 'tablib.packages.xlwt3', 'tablib.packages.xlrd3', 'tablib.packages.odf3', 'tablib.packages.openpyxl3', 'tablib.packages.openpyxl3.shared', 'tablib.packages.openpyxl3.reader', 'tablib.packages.openpyxl3.writer', 'tablib.packages.yaml3', 'tablib.packages.dbfpy3' ]) |
6
geeklian 2014-12-31 08:19:57 +08:00 via Android
直接把python打包不就好了=.=
这是win下最好用的方法 |
7
jamiesun OP @icylogic 感谢! 果然有好东西 https://github.com/phuslu/pybuild
|
8
yangzh 2015-01-01 04:56:14 +08:00
还好啊。pyinstaller,加上手动在配置里写上动态加载的模块,似乎没遇到啥问题。
|
9
laike9m 2015-01-01 15:48:09 +08:00
还好你没遇到.dll 缺失的问题...
|