需要帮助使用 pyinstaller 编译 python
need help to compile python with pyinstaller
我想在机器 运行 windows 7+ 上分发我的 python 代码。它由几个 .py 文件组成,主要文件在 cprofiles_lmfit.py
中,还有一个文件 cprofiles.ui
用于描述 GUI 和一个 .pdf 文档。
我遇到了困难(例如参见 [=15=])但最终使用 pyinstaller 和命令行制作了一个 suitable 二进制文件:
pyinstaller --noupx --onefile --add-data="cprofiles.ui;." cprofiles_lmfit.py
除了上面 link 中描述的 theano
模块的问题外,二进制文件还有一些问题:
.exe 有 220MB 大;我想缩小尺寸。
当 运行 .exe 控制台打开并等待约 20 秒后打开 GUI。打开 GUI 后,关闭控制台会杀死 GUI ...我想避免使用此控制台并跳过 ~20s。
ui文件必须与exe一起分发(在同一目录);我曾希望 'add-data' 选项不会出现这种情况。我想包括它。
python 环境的“Library/plugin”目录中的“platforms”目录也必须与 exe 一起分发。否则当运行 exe'this application has failed to start because it could not find the qt platform plugin windows'时会有错误信息(但是当b[=53时pyinstaller没有错误信息=] lding !)。我想摆脱这个 'platforms' 游戏。
你知道如何解决这些问题吗?
2017 年 11 月 28 日更新:
没有人 ?如果你能对其中之一做出贡献,请给我一个线索。
我想我有一个更好的解决方案:将 nsis 与 pyinstaller 结合使用。
这里有更详细的答案:
- 文件这么大是因为它包含完整的 python 环境。我认为除了创建一个包含更少文件的虚拟环境并在代码中使用更少的包之外,您无能为力。
- 运行 exe 需要很长时间,因为您选择了 --onefile 选项。结果它将解压缩 exe,将其保存到一个临时目录,然后 运行 脚本。使用 --onefile 时,它实际上并不是真正的可执行文件,而只是一个解压缩然后自行启动的 zip 文件。更好的选择可能是:
- (和 4.)。不要使用 --onefile 选项,只需使用 pyinstaller 正常打包它,然后使用 nsis 在其之上创建一个脚本。这样用户就可以 运行 安装程序,它将打包您放入 nsis 脚本中的所有文件(包括 pyinstaller 创建的所有文件)以及您想要的任何其他文件。将会有一个很好的设置界面,它还会创建一个.exe 的快捷方式。
有点晚了,但是,万一以后有人在这里绊倒了,你可以使用 'auto-py-to-exe' 包来消除使用 CMD 的麻烦。它提供了一个漂亮的 GUI,其中包含 'pyinstaller'.
的所有选项
它可以使用 'pip install auto-py-to-exe' 安装并且可以在终端与 'auto-py-to-exe' 一起使用。
GitHub link : https://github.com/brentvollebregt/auto-py-to-exe
我想在机器 运行 windows 7+ 上分发我的 python 代码。它由几个 .py 文件组成,主要文件在 cprofiles_lmfit.py
中,还有一个文件 cprofiles.ui
用于描述 GUI 和一个 .pdf 文档。
我遇到了困难(例如参见 [=15=])但最终使用 pyinstaller 和命令行制作了一个 suitable 二进制文件:
pyinstaller --noupx --onefile --add-data="cprofiles.ui;." cprofiles_lmfit.py
除了上面 link 中描述的 theano
模块的问题外,二进制文件还有一些问题:
.exe 有 220MB 大;我想缩小尺寸。
当 运行 .exe 控制台打开并等待约 20 秒后打开 GUI。打开 GUI 后,关闭控制台会杀死 GUI ...我想避免使用此控制台并跳过 ~20s。
ui文件必须与exe一起分发(在同一目录);我曾希望 'add-data' 选项不会出现这种情况。我想包括它。
python 环境的“Library/plugin”目录中的“platforms”目录也必须与 exe 一起分发。否则当运行 exe'this application has failed to start because it could not find the qt platform plugin windows'时会有错误信息(但是当b[=53时pyinstaller没有错误信息=] lding !)。我想摆脱这个 'platforms' 游戏。
你知道如何解决这些问题吗?
2017 年 11 月 28 日更新: 没有人 ?如果你能对其中之一做出贡献,请给我一个线索。
我想我有一个更好的解决方案:将 nsis 与 pyinstaller 结合使用。
这里有更详细的答案:
- 文件这么大是因为它包含完整的 python 环境。我认为除了创建一个包含更少文件的虚拟环境并在代码中使用更少的包之外,您无能为力。
- 运行 exe 需要很长时间,因为您选择了 --onefile 选项。结果它将解压缩 exe,将其保存到一个临时目录,然后 运行 脚本。使用 --onefile 时,它实际上并不是真正的可执行文件,而只是一个解压缩然后自行启动的 zip 文件。更好的选择可能是:
- (和 4.)。不要使用 --onefile 选项,只需使用 pyinstaller 正常打包它,然后使用 nsis 在其之上创建一个脚本。这样用户就可以 运行 安装程序,它将打包您放入 nsis 脚本中的所有文件(包括 pyinstaller 创建的所有文件)以及您想要的任何其他文件。将会有一个很好的设置界面,它还会创建一个.exe 的快捷方式。
有点晚了,但是,万一以后有人在这里绊倒了,你可以使用 'auto-py-to-exe' 包来消除使用 CMD 的麻烦。它提供了一个漂亮的 GUI,其中包含 'pyinstaller'.
的所有选项它可以使用 'pip install auto-py-to-exe' 安装并且可以在终端与 'auto-py-to-exe' 一起使用。
GitHub link : https://github.com/brentvollebregt/auto-py-to-exe