1. 程式人生 > >pyinstaller 打包exe程序讀不到配置文件No such file

pyinstaller 打包exe程序讀不到配置文件No such file

ont 時間 新博 print key ble 調用 參考 然而

挺久沒更新博客的,一來之前是覺得才疏學淺,記錄下來的太簡單沒人看。二來時間上不是很充裕(不是借口,有時間打遊戲,沒時間總結)

偶然有一次發現同事在搜索解決問題的時候正在看我博客的解決思路,很奇妙的感覺。為避免重復踩坑,我先踩的我填上。

順便補上在pyinstaller打包exe的過程中,很容易遇到以下問題

1、打包不成功 解決方法:先檢查下打包目錄是否含有中文

然後第二個是最近踩的,希望弄個可配置化的程序(當用戶需求變動可自行配置的),然而打包後執行卻出現了問題——簡單來說找不到配置文件No such file

(我是封裝了簡易的發郵件exe,配置文件放exe同目錄)

先cd進入exe所在目錄再調用發送,正常。

以下方式“目錄\exe”,就失敗了。

技術分享圖片

谷歌百度之,發現配置文件的讀取目錄有問題。寫程序的時候默認是同級目錄,但是cmd調用的時候,應該是C:/user/vhills下進行因此就會找不到你放在程序目錄裏的配置文件

所以解決方案:

1、用os.path.realpath(sys.argv[0])

以下為前人總結的目錄問題,自己手動試著做py執行和exe執行找差異,應該就能發現問題了(https://yutuo.net/archives/95be5c27e092b812.html 這個說得挺好的)

import os, sys

print(‘__file__:‘, __file__)
print(‘realpath of __file__:‘, os.path.realpath(__file__))
print(‘sys.executable:‘, sys.executable)
print(‘realpath of sys.executable:‘, os.path.realpath(sys.executable))
print(‘sys.argv[0]:‘, sys.argv[0])
print(‘realpath of sys.argv[0]:‘, os.path.realpath(sys.argv[0]))
print(‘sys.path[0]:‘, sys.path[0])
print(‘realpath of sys.path[0]:‘, os.path.realpath(sys.path[0]))

  

參考

1、https://yutuo.net/archives/95be5c27e092b812.html

2、https://segmentfault.com/a/1190000009305457

pyinstaller 打包exe程序讀不到配置文件No such file