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

回到顶部