需要帮助用pyinstaller编译python

时间:2017-10-18 20:48:13

标签: python windows exe pyinstaller

我想在运行Windows 7+的机器上分发我的python代码。它由几个主要位于cprofiles.ui的.py文件和一个用于描述GUI的文件pyinstaller --noupx --onefile --add-data="cprofiles.ui;." cprofiles_lmfit.py 和用于doc的.pdf组成。

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

theano

除了上面链接中描述的<canvas>模块的问题之外,二进制文件仍然存在一些问题:

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

  • 运行.exe时,控制台会打开并在打开GUI之前等待约20秒。一旦GUI被打开,关闭控制台会杀死GUI ...我想避开这个控制台并跳过~20s。

  • ui文件必须与exe一起分发(在同一目录下);我原本希望这不应该是&#39;添加数据&#39;选项。我想包括它。

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

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

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

2 个答案:

答案 0 :(得分:1)

我认为我有更好的解决方案:将nsis与pyinstaller一起使用。

这里有更详细的答案:

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

答案 1 :(得分:0)

为时已晚,但是如果以后有人迷路了,您可以使用'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