【问题标题】:Pyinstaller creates many files with --onefile argumentPyinstaller 使用 --onefile 参数创建许多文件
【发布时间】:2017-03-19 23:00:18
【问题描述】:

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

运行命令

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

使用路径创建一个工作可执行文件

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

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

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

感谢您的建议。

【问题讨论】:

标签: build kivy exe pyinstaller


【解决方案1】:

如果存在 pyinstaller 无法将其包含在内的支持文件,您必须手动指定它们。

在你的GroundControl.spec中需要找到Analysis下的datas条目并添加dlls等文件在那个元组中。更多信息here

它应该看起来像这样

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

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

一些进一步的说明:

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

【讨论】:

  • 谢谢。非常清晰的答案。正是我想要的。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 2014-12-22
    相关资源
    最近更新 更多