打算发布一个 windows 平台工具,结果好多坑

2014-12-30 17:21:59 +08:00
 jamiesun

发布工具
1. py2exe
2. pyinstaller

其他的没怎么看,这两个了解比较多。

在处理一些嵌套依赖时很沮丧,各种动态性较强的模块常常被遗漏很多。

还有一些耍酷的模块更让我受不了,比如tablib,他把2和3的代码混在一块,我用py2exe编译就无法通过。使用excludes排除3的部分后依然有依赖问题,无赖只好重写功能。

wsgi的功能模块难以打包,打包成exe后,各种崩溃(比如多线程问题)。我还只是简单地用bottle。于是我就放弃在windows上用web了,用qt重写了管理模块,qt的打包倒是蛮顺利,pyinstaller做了针对性的优化。

3643 次点击
所在节点    Python
9 条回复
icylogic
2014-12-30 17:56:12 +08:00
我觉得你应该去问下 goagent 的开发者,貌似他解决了若干 py 打包坑
besto
2014-12-30 17:56:17 +08:00
...cx_freeze...
zaxaca
2014-12-30 18:12:28 +08:00
3个工具我都用过,目前固定使用cx_freeze
zackshen
2014-12-30 22:17:00 +08:00
简单的使用过pyinstaller挺不错的
jamiesun
2014-12-30 23:01:11 +08:00
@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'
])
geeklian
2014-12-31 08:19:57 +08:00
直接把python打包不就好了=.=
这是win下最好用的方法
jamiesun
2014-12-31 11:40:39 +08:00
@icylogic 感谢! 果然有好东西 https://github.com/phuslu/pybuild
yangzh
2015-01-01 04:56:14 +08:00
还好啊。pyinstaller,加上手动在配置里写上动态加载的模块,似乎没遇到啥问题。
laike9m
2015-01-01 15:48:09 +08:00
还好你没遇到.dll 缺失的问题...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/157960

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX