我想在运行 Windows 7+ 的计算机上分发我的 Python 代码。它由几个 .py 文件组成,其中主文件位于 cprofiles_lmfit.py
中,还有一个用于描述 GUI 的文件 cprofiles.ui
和一个用于文档的 .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 日更新: 没有人 ?如果您能对其中一点做出贡献,请给我一条线索。
最佳答案
我想我有一个更好的解决方案给你:将 nsis 与 pyinstaller 结合使用。
这里有更详细的答案:
- 该文件之所以那么大,是因为它包含完整的 python 环境。我认为除了创建一个包含较少文件的虚拟环境并在代码中使用较少的包之外,您对此无能为力。
- 由于您选择了 --onefile 选项,因此运行 exe 需要很长时间。结果,它将解压缩 exe,将其保存到临时目录,然后运行脚本。当使用 --onefile 时,它实际上并不是一个真正的可执行文件,而只是一个解压缩然后自行启动的 zip 文件。更好的选择可能是:
- (和 4.)。不使用 --onefile 选项,只需使用 pyinstaller 正常打包,然后使用 nsis 在其上创建一个脚本。 。这样用户就可以运行安装程序,该安装程序将打包您放入 nsis 脚本中的所有文件(包括 pyinstaller 创建的所有文件)以及您想要的任何其他文件。将会有一个很好的设置界面,它还将创建 .exe 的快捷方式。
关于python - 需要帮助来使用 pyinstaller 编译 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46818993/