我正在尝试用PyInstaller构建一个一个文件EXE,它将包含一个图像和一个图标。我一辈子都不能让它和--onefile
一起工作。
如果我这样做的话,一切都很好。
当我使用--onefile
时,它找不到引用的附加文件(在运行编译的EXE时)。它发现DLLs和其他一切都很好,只是没有两个图像。
我查看了运行EXE时生成的temp目录(例如,\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
目录并在解包(开发)模式下使用本地目录,我使用以下命令:输出:
在应用程序未PyInstalled(即未设置
sys._MEIPASS
)的情况下,所有其他答案都使用当前工作目录。这是错误的,因为它阻止您从脚本所在目录以外的目录运行应用程序。更好的解决方案:
较新版本的PyInstaller不再设置
env
变量,因此Shish优秀的answer将不起作用。现在路径设置为sys._MEIPASS
:相关问题 更多 >
编程相关推荐