V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
jamiesun
V2EX  ›  Python

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

  •  
  •   jamiesun ·
    jamiesun · 2014-12-30 17:21:59 +08:00 · 3608 次点击
    这是一个创建于 3615 天前的主题,其中的信息可能已经有所发展或是发生改变。

    发布工具
    1. py2exe
    2. pyinstaller

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

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

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

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

    9 条回复    2015-01-01 15:48:09 +08:00
    icylogic
        1
    icylogic  
       2014-12-30 17:56:12 +08:00   ❤️ 1
    我觉得你应该去问下 goagent 的开发者,貌似他解决了若干 py 打包坑
    besto
        2
    besto  
       2014-12-30 17:56:17 +08:00
    ...cx_freeze...
    zaxaca
        3
    zaxaca  
       2014-12-30 18:12:28 +08:00
    3个工具我都用过,目前固定使用cx_freeze
    zackshen
        4
    zackshen  
       2014-12-30 22:17:00 +08:00
    简单的使用过pyinstaller挺不错的
    jamiesun
        5
    jamiesun  
    OP
       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
        6
    geeklian  
       2014-12-31 08:19:57 +08:00 via Android
    直接把python打包不就好了=.=
    这是win下最好用的方法
    jamiesun
        7
    jamiesun  
    OP
       2014-12-31 11:40:39 +08:00   ❤️ 1
    @icylogic 感谢! 果然有好东西 https://github.com/phuslu/pybuild
    yangzh
        8
    yangzh  
       2015-01-01 04:56:14 +08:00
    还好啊。pyinstaller,加上手动在配置里写上动态加载的模块,似乎没遇到啥问题。
    laike9m
        9
    laike9m  
       2015-01-01 15:48:09 +08:00
    还好你没遇到.dll 缺失的问题...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4613 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 09:52 · PVG 17:52 · LAX 01:52 · JFK 04:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.