我正在尝试用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将数据解压到临时文件夹中,并将此目录路径存储在
_MEIPASS2
环境变量中。要在打包模式下获取_MEIPASS2
目录,并在解包(开发)模式下使用本地目录,我使用以下方法:输出:
在应用程序未安装的情况下(即未设置
sys._MEIPASS
),所有其他答案都使用当前工作目录。这是错误的,因为它阻止您从脚本所在目录以外的目录运行应用程序更好的解决方案:
PyInstaller的较新版本不再设置
env
变量,因此Shish的优秀answer将无法工作。现在,路径被设置为sys._MEIPASS
:相关问题 更多 >
编程相关推荐