Pyinstaller 使用 --onefile 参数创建许多文件
Pyinstaller creates many files with --onefile argument
我正在用 Kivy 和 pyinstaller 打包应用程序。
运行命令
python -m PyInstaller --clean --win-private-assemblies -F GroundControl.spec
创建路径为
的工作可执行文件
\Git\GroundControl\dist\GroundControl\GroundControl.exe
但该文件夹还包含许多其他 .pyd 和 .dll 文件,这些文件是 .exe 文件到 运行 所需的。
有没有办法真正创建一个 .exe 文件来分发或至少减少生成的文件数量?
感谢您的任何建议。
您可以使用 Inno Setup 等安装程序包来创建一 (1) 个 .exe 文件。
如果 pyinstaller 无法找到包含它们的支持文件,您必须手动指定它们。
在您的 GroundControl.spec 中,需要在 Analysis 下找到 datas 条目并在该元组中添加 dlls 和其他文件。更多信息 here.
它应该看起来像这样
a = Analysis(['client.py'],
pathex=['.'],
binaries=None,
datas=[ ('desired_dll.dll', '.') ],
hiddenimports=[],
hookspath=[], ...
您需要在此处添加的最常见的 kivy 文件是 .kv,因为默认情况下它们不会被捆绑。
一些补充说明:
- 你需要运行 pyinstaller --onefile
- 如果您想在 运行 时访问文件(例如 .kv 文件),则需要调整加载它们的路径。您的应用程序将 运行 放在一个地方,但文件将解压缩到另一个文件夹中。您可以使用此 var
sys._MEIPASS
. 找到解压缩文件的文件夹
我正在用 Kivy 和 pyinstaller 打包应用程序。
运行命令
python -m PyInstaller --clean --win-private-assemblies -F GroundControl.spec
创建路径为
的工作可执行文件\Git\GroundControl\dist\GroundControl\GroundControl.exe
但该文件夹还包含许多其他 .pyd 和 .dll 文件,这些文件是 .exe 文件到 运行 所需的。
有没有办法真正创建一个 .exe 文件来分发或至少减少生成的文件数量?
感谢您的任何建议。
您可以使用 Inno Setup 等安装程序包来创建一 (1) 个 .exe 文件。
如果 pyinstaller 无法找到包含它们的支持文件,您必须手动指定它们。
在您的 GroundControl.spec 中,需要在 Analysis 下找到 datas 条目并在该元组中添加 dlls 和其他文件。更多信息 here.
它应该看起来像这样
a = Analysis(['client.py'],
pathex=['.'],
binaries=None,
datas=[ ('desired_dll.dll', '.') ],
hiddenimports=[],
hookspath=[], ...
您需要在此处添加的最常见的 kivy 文件是 .kv,因为默认情况下它们不会被捆绑。
一些补充说明:
- 你需要运行 pyinstaller --onefile
- 如果您想在 运行 时访问文件(例如 .kv 文件),则需要调整加载它们的路径。您的应用程序将 运行 放在一个地方,但文件将解压缩到另一个文件夹中。您可以使用此 var
sys._MEIPASS
. 找到解压缩文件的文件夹