如何像在 SqueezeTool 中一样分发具有所有依赖项的 Python 3.6 应用程序



我有一个在Kivy上为GUI构建的python应用程序,我将该文件与RNN模型分开。我只是直接导入该文件:

from keras_network import Network

我尝试使用官方技巧使用 pyinstaller 进行部署,但这不起作用,因为我的应用程序在运行生成的最终.exe文件时崩溃。我什至对 .spec 文件进行了适当的更改。
有没有更简单的方法在 Python 3.6 中打包这个应用程序?(比如SqueezeTool,它太旧了,在Python 3.6中不起作用(

我可以将 python 文件编译为 .pyc 文件并静态链接所有依赖项吗?为什么当Python如此流行时,这仍然是一个很大的痛苦?

好的...我终于让它工作了。 在 PyQt5 中实现整个项目并尝试使用 PyInstaller 打包它之后,我想出了这个解决方案。

以下是我如何让它工作(对于以后可能有任何问题的人(:

  1. 二手蟒蛇 3.5
  2. 安装 Windows 10 SDK,以查找一些本应随 MSVC 2015 一起出现的文件。
  3. 安装开发版 PyInstaller 来自:
    pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip --upgrade
  4. 使用该命令包含我的数据文件,以及包括隐藏导入 h5py:

    pyinstaller --add-data keras_model.h5;. --add-data TrainingData.txt;. --hidden-import=h5py --hidden-import=h5py.defs --hidden-import=h5py.utils --hidden-import=h5py.h5ac --hidden-import=h5py._proxy project-name.py

  5. 然后编辑生成的 .spec 文件。添加了"from kivy.deps import sdl2, glew",在注释后的文件开头没有引号。还添加了"*[Tree(p( for p in (sdl2.dep_bins + glew.dep_bins(]",而 COLLECT(( 函数调用中的引号没有作为第 6 个参数。
  6. 然后使用以下命令使用 .spec file:pyinstaller --add-data keras_model.h5;. --add-data TrainingData.txt;. --hidden-import=h5py --hidden-import=h5py.defs --


  7. hidden-import=h5py.utils --hidden-import=h5py.h5ac --hidden-import=h5py._proxy project-name.spec

    然后,构建的应用程序的可执行文件存在于"dist\project-name\"目录中。双击应用程序会导致应用程序完美执行。

    希望这对被困在同一个地方的人有所帮助。

最新更新