Pyinstaller打包exe,丢失图标等问题

2023-05-30,,

Pyinstaller打包exe,丢失图标等问题

一、原因

exe运行时会解压一个名为'_MEI*'的资源文件夹到电脑的临时目录,程序结束时删除。

程序里使用'\图标.png'这样的路径,exe运行时只会搜自己所在目录,当然找不到。

二、解决方案

1、确保图片在这个临时资源文件夹里

这个可以通过修'.spec'配置文件,将图片添加进去。

(注:.spec就是Pyinstaller上次打包生成的文件,在你的python项目目录下。)

这是我用到的三个图片,其实就是加三条元组到'binaries'列表中

逗号前是图片在python项目里的地址,逗号后是打包进'_MEI*'临时文件夹的地址。

我是里边建了一个'img'文件夹存放图片,如直接放根目录用点就行,如('./img/info.png','.')

最后,打包时运行pyinstaller 程序入口.spec,就可以将图片资源添加进去了。

(注:其它外部资源也可以这样添加,比如.ini、.txt、.exe等等)

2、确保程序能找到这个路径

因为每次临时目录的名字都不一样,所以需要一个能动态获取这个路径的方法。

def getRealPath(s):
# 获取exe解压目录的绝对路径
import os, sys
p = os.path.realpath(sys.path[0])
p = p.replace(r'\base_library.zip', '')
p = p + s
return p s=r'\img\info.png'
realPath=getRealPath(s)
print(realPath)

代码奉上,核心语句是'os.path.realpath(sys.path[0])'。

Python运行效果如下:

C:\Users\GuoDaXia\Anaconda3\envs\temp\python.exe D:/untitled1/测试.py
D:\untitled1\img\info.png Process finished with exit code 0

打包成exe,拖到cmd窗口里运行试试吧。

Pyinstaller打包exe,丢失图标等问题的相关教程结束。

《Pyinstaller打包exe,丢失图标等问题.doc》

下载本文的Word格式文档,以方便收藏与打印。