我搜索了我的问题,它引导我到这里:Bundling data files with PyInstaller (--onefile)
所以我添加了接受的答案代码,
def resource_path(relative):
return os.path.join(
os.environ.get(
"_MEIPASS2",
os.path.abspath(".")
),
relative
)
# in development
>>> resource_path("app_icon.ico")
"/home/shish/src/my_app/app_icon.ico"
# in deployment
>>> resource_path("app_icon.ico")
"/tmp/_MEI34121/app_icon.ico"
但我仍然收到cannot locate imageName
错误。除了它列出_MEIPASS
文件夹。
有什么我想念的吗?
如果需要更多信息,请与我们联系。就我而言,pyinstaller
是黑魔法,所以我不确定相关信息是什么。
答案 0 :(得分:0)
我也陷入了这一步。然后我读了pyinstaller.py文件,并以某种方式成功解决了它。通过添加resource_path()方法修改源文件(就像您已经完成的那样),您必须执行以下步骤:
运行:
python utils\Makespec.py --onefile your_script_name.py
接下来,编辑从第一步创建的your_script_name文件夹中的your_script_name.spec文件。添加这些行(调整图像名称)
a.datas += [('relative path from pyinstaller folder','actual path to image file','DATA')]
例如像这样,
a.datas += [('calvin.jpg','C:\\projects\\python\\calvin.jpg','DATA')]
注意:当我将图像放在子文件夹中时,我无法使其正常工作,因此我将它们保存在pyinstaller文件夹中。
然后最后运行:
python pyinstaller.py your_script_name\your_script_name.spec
这是使用您在第二步中编辑的.spec文件运行pyinstaller。
希望这有助于消除您的所有疑虑:)