Python-使用PyInstaller捆绑数据文件(--onefile)
我正在尝试使用PyInstaller
构建一个包含文件和图标的单文件EXE。我一生无法忍受--onefile
。
如果我这样做了,--onedir
那么一切都很好。当我使用时--onefile
,它(在运行编译的EXE时)找不到引用的其他文件。它找到DLL和其他所有东西,只是找不到两个映像。
我查看了运行EXE时生成的temp-dir(\Temp\_MEI95642\例如)
,并且文件确实在其中。当我将EXE放到该临时目录中时,它会找到它们。很困惑。
这就是我添加到.spec文件中的内容
a.datas += [('images/icon.ico', 'D:\\[workspace]\\App\\src\\images\\icon.ico', 'DATA'),('images/loaderani.gif','D:\\[workspace]\\App\\src\\images\\loaderani.gif','DATA')]
我还要补充一点,我也尝试过不要将它们放在子文件夹中,也没有什么不同。
编辑: 由于PyInstaller
更新,将较新的答案标记为正确。
回答:
较新版本的PyInstaller
不再设置该env
变量,因此Shish的出色答案将不起作用。现在,路径设置为sys._MEIPASS
:
def resource_path(relative_path): """ Get absolute path to resource, works for dev and for PyInstaller """
try:
# PyInstaller creates a temp folder and stores path in _MEIPASS
base_path = sys._MEIPASS
except Exception:
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)
以上是 Python-使用PyInstaller捆绑数据文件(--onefile) 的全部内容, 来源链接: utcz.com/qa/434262.html