Pyinstaller使用--onefile参数创建许多文件

时间:2017-03-19 23:00:18

标签: build kivy exe pyinstaller

我正在使用Kivy和pyinstaller打包应用程序。

运行命令

python -m PyInstaller --clean --win-private-assemblies -F GroundControl.spec

使用路径

创建工作可执行文件

\Git\GroundControl\dist\GroundControl\GroundControl.exe

但该文件夹还包含许多其他.pyd和.dll文件,这些文件是.exe文件运行所必需的。

有没有办法真正创建一个.exe文件来分发或者至少可以减少生成的文件数量?

感谢您的任何建议。

2 个答案:

答案 0 :(得分:1)

您可以使用Inno Setup等安装程序包创建一(1)个.exe文件。

答案 1 :(得分:1)

如果存在 pyinstaller 无法理解的支持文件,则必须手动指定它们。

GroundControl.spec 中,需要在分析下找到数据条目并添加 dll 和其他文件在那个元组中。更多信息here

看起来应该是这样的

a = Analysis(['client.py'],
              pathex=['.'],
              binaries=None,
              datas=[ ('desired_dll.dll', '.') ],
              hiddenimports=[],
              hookspath=[], ...

您需要在此处添加的最常见的kivy文件是 .kv ,因为默认情况下它们不会捆绑在一起。

进一步说明:

  • 您需要使用 - onefile
  • 运行pyinstaller
  • 如果要在运行时访问文件(例如.kv文件),则需要调整加载它们的路径。您的应用程序将在一个位置运行,但文件将在另一个文件夹中解压缩。您可以使用此var sys._MEIPASS
  • 找到解压缩文件的文件夹