2017-10-18 136 views
2

我想分发我的Python代码运行Windows 7 +的机器上。它由几个主文件为cprofiles_lmfit.py的.py文件和一个文件cprofiles.ui组成,用于描述文档的GUI和.pdf。需要帮助编译蟒pyinstaller

我有一个硬时间(参见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 ...我想避开这个控制台并跳过〜20s。

  • ui文件必须与exe一起发布(在同一目录中);我曾希望这不应该是'添加数据'选项的情况。我想包括它。

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

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


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

回答

1

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

这里更详细的答案:

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