Pyinstaller打包exe,丟失圖標等問題


Pyinstaller打包exe,丟失圖標等問題

image-20200227121541069

一、原因

exe運行時會解壓一個名為'_MEI*'的資源文件夾到電腦的臨時目錄,程序結束時刪除。

image-20200227122718878

程序里使用'\圖標.png'這樣的路徑,exe運行時只會搜自己所在目錄,當然找不到。

二、解決方案

1、確保圖片在這個臨時資源文件夾里

這個可以通過修'.spec'配置文件,將圖片添加進去。

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

image-20200227125101170

這是我用到的三個圖片,其實就是加三條元組到'binaries'列表中

逗號前是圖片在python項目里的地址,逗號后是打包進'_MEI*'臨時文件夾的地址。

我是里邊建了一個'img'文件夾存放圖片,如直接放根目錄用點就行,如('./img/info.png','.')

image-20200227130117174

最后,打包時運行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窗口里運行試試吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM