PyQt 工程打包成exe之后獲取當前路徑出錯問題處理


平常寫python代碼,獲取當前路徑習慣用

os.path.realpath(os.path.dirname(__file__))

即通過python的__file__來判斷腳本路徑以此作為當前文件路徑.

但是PyQt的代碼通過pyinstaller打包的exe,再通過這種方式獲取當前路徑,獲取出來的卻是

C:\Users\Windows賬號名\AppData\Local\Temp\_xxxx 這樣的路徑.

打開這個路徑,可以看到pyinstaller打包的exe它運行依賴的一些庫文件都釋放到了這個目錄.我推測是打包exe時候,pyinstaller把可執行程序所需的庫先打包進exe文件,在執行時候exe文件再把這些庫文件釋放到Temp文件夾下.

那怎么修復獲取當前路徑出錯問題呢?

有兩個方案:

1. 通過sys.argv[0]的值來判斷

os.path.realpath(os.path.dirname(sys.argv[0]))

2. 通過sys.executable的值來判斷

os.path.realpath(os.path.dirname(sys.executable))

sys.argv[0] 是指命令行上可執行文件的路徑.

sys.executable是 Python 解釋器的可執行二進制文件的絕對路徑,直接在pycharm里面運行時候,sys.executable獲取的python.exe的路徑,但是python腳本打包成exe之后,sys.executable就是exe所在的文件路徑了.

  • 下面這個是以腳本形式運行sys.executable獲取到的路徑

  • 下面這個是打包成exe之后以同樣方式獲取到的路徑
    image

相對而言,使用sys.argv[0]方便一些,畢竟不管是以python腳本方式運行還是打包成exe之后再執行,它獲取的路徑是一致的.


免責聲明!

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



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