我正在尝试将图像添加到 Pyinstaller 生成的一个文件中。我已经阅读了很多问题/论坛,例如 这个 和那个 , 但仍然无法正常工作。
我知道对于一个文件操作,Pyinstller 会生成一个可以通过 sys.MEIPASS
访问的临时文件夹。但是我不知道 我应该在我的脚本中的确切位置添加这个 sys.MEIPASS
。
请出示以下资料:
1- 应 在何处以及如何 添加 sys.MEIPASS
?在 python 脚本中,还是在 spec 文件中?
2-要使用的确切命令是什么?我试过了
pyinstaller --onefile --windowed --add-data="myImag.png;imag" myScript.py
或者
pyinstaller --onefile --windowed myScript.py
然后将 (‘myImag.png’,‘imag’) 添加到 spec 文件中,然后运行
pyinstller myScript.spec
没有一个有效。
注意:我在windows 7下有python 3.6
原文由 AhmedWas 发布,翻译遵循 CC BY-SA 4.0 许可协议
当使用 PyInstaller 打包到单个文件时,运行 .exe 会将所有内容解压到 TEMP 目录中的文件夹中,运行脚本,然后丢弃临时文件。临时文件夹的路径随着每次运行而变化,但对其位置的引用被添加到
sys
作为sys._MEIPASS
。要使用它,当您的 Python 代码读取任何也将打包到您的 .exe 中的文件时,您需要将文件位置更改为位于
sys._MEIPASS
下。换句话说,您需要将它添加到您的 python 代码中。这是一个示例,当打包到单个文件时,使用您引用的链接中的代码将文件路径调整到正确的位置。
例子
使用以下选项运行 PyInstaller 打包文件:
构建正确运行的myScript.exe,可以打开和读取打包的数据文件。