【问题标题】:need help to compile python with pyinstaller需要帮助来使用 pyinstaller 编译 python
【发布时间】:2018-03-30 20:21:12
【问题描述】:

我想在运行 Windows 7+ 的机器上分发我的 python 代码。它由几个 .py 文件组成,主文件在 cprofiles_lmfit.py,还有一个文件 cprofiles.ui 用于描述 GUI 和一个 .pdf 用于文档。

我遇到了困难(例如参见build a .exe for Windows from a python 3 script importing theano with pyinstaller),但最终使用带有命令行的 pyinstaller 制作了一个合适的二进制文件:

pyinstaller --noupx --onefile --add-data="cprofiles.ui;." cprofiles_lmfit.py

除了上面链接中描述的theano模块的问题外,二进制文件还有一些问题:

  • .exe 为 220MB 大;我想缩小尺寸。

  • 运行 .exe 时,控制台会打开并等待约 20 秒,然后再打开 GUI。一旦打开 GUI,关闭控制台就会杀死 GUI...我想避开这个控制台并跳过 ~20 秒。

  • ui文件必须与exe一起分发(在同一目录下);我曾希望“添加数据”选项不应该是这种情况。我想加入它。

  • python 环境的“Library/plugin”目录中的“platforms”目录也必须与 exe 一起分发。否则运行 exe 时会出现错误消息“此应用程序无法启动,因为它找不到 qt 平台插件窗口”(但构建时 pyinstaller 没有错误消息!)。我想摆脱这种“平台”游戏。

你知道如何解决这些问题吗?


2017 年 11 月 28 日更新: 没有人 ?如果你能对这些观点做出贡献,请给我一个线索。

【问题讨论】:

    标签: python windows exe pyinstaller theano


    【解决方案1】:

    我想我有一个更好的解决方案:将 nsis 与 pyinstaller 结合使用。

    这里有更详细的答案:

    1. 文件那么大,因为它包含完整的 python 环境。除了创建一个包含更少文件和在代码中使用更少包的虚拟环境之外,我认为您无能为力。
    2. 运行 exe 需要很长时间,因为您选择了 --onefile 选项。结果,它将解压缩 exe,将其保存到临时目录,然后运行脚本。使用 --onefile 时,它​​实际上并不是一个可执行文件,而只是一个解压缩然后自行启动的 zip 文件。更好的选择可能是:
    3. (和 4.)。不要使用 --onefile 选项,只需使用 pyinstaller 正常打包它,然后使用 nsis 在其上创建一个脚本。这样用户就可以运行安装程序,它将打包您放入 nsis 脚本中的所有文件(包括由 pyinstaller 创建的所有文件)以及您想要的任何其他文件。将会有一个不错的设置界面,它还会创建 .exe 的快捷方式。

    【讨论】:

      【解决方案2】:

      有点晚了,但如果以后有人在这里绊倒,您可以使用“auto-py-to-exe”包来消除使用 CMD 的麻烦。它提供了一个不错的 GUI,包含 'pyinstaller' 的所有选项。

      可以使用“pip install auto-py-to-exe”安装,也可以在终端使用“auto-py-to-exe”。

      GitHub 链接:https://github.com/brentvollebregt/auto-py-to-exe

      【讨论】:

        猜你喜欢
        • 2023-04-06
        • 2015-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多