Re: [問題] MEIPASS - No such file or directory er
※ 引述《imhandmore (imhandmore)》之銘言:
: 我用OpennCC模組製作程式碼,我在IDE環境上面可以順利執行
: 但等到我用pyinstaller 打包成exe之後就會顯示下列錯誤:
: Traceback (most recent call last):
: File "converter2.py", line 20, in <module>
: File "opencc\opencc.py", line 55, in __init__
: File "opencc\opencc.py", line 106, in _init_dict
: FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\Claude\\AppData\\Local\\Temp\\_MEI151842\\opencc\\config\\s2tw.json'
: [20160] Failed to execute script converter2
: ----------------------------
: 我看stackoverflow的文章,加上adddata也是一樣
: 目前苦惱不知道怎麼解決,請各位幫我想個辦法,或者請私訊我 我可以提供報酬請你們幫忙解決
: -----
: Sent from JPTT on my Google Pixel 3a.
----------
去年因為工作常常用到 pyinstaller 跟安裝精靈開發專案,
今天剛好看到有人討論,所以有點興趣。
也有可能是我觀念有錯,請不吝指正,讓我有機會成長。
----------
: poototo: le大對sys._MEIPASS的動態路徑觀念要參考一下
我覺得 poototo 大大可能太執著在 MEIPASS 這個關鍵字上。
我平常習慣的寫法就是
project_root = Path(sys._MEIPASS) if getattr(sys, 'frozen', False) else
Path(__file__).absolute().parents[0]
先抓出專案路徑,接著都用這個路徑去動態切換。
但原 PO 這個寫法,就算改用 sys._MEIPASS,也只能讀到該專案的目錄而已,抓不到使
用者的 AppData 路徑,還是會報錯。
---
基本上,整段錯誤訊息的重點是
FileNotFoundError: [Errno 2] No such file or directory:
'C:\\Users\\Claude\\AppData\\Local\\Temp\\_MEI151842\\opencc\\config\\s2tw.json'
這一行。
意思是,你的 exe 執行時,在 C:\\Users\\Claude\\AppData\\... 這路徑下面讀取不到
s2tw.json 這個檔案。
這個目錄是 Windows 下,每個使用者的應用程式設定,你安裝的軟體,都有可能在這邊
儲存你需要的設定值或檔案。
所以,是因為原 PO 的 s2tw.json 檔案位置放在 AppData 下,
當安裝到另外一台電腦時(假設使用者是 John),那他的絕對路徑應該依據使用者名
稱修改成 C:\\Users\\John\\AppData\\...\\s2tw.json
這個寫法,不僅要根據使用者名稱去修改路徑,還要請使用者的電腦上安裝 opencc,
才會有這個檔案存在。
但原 PO 最近暫時沒回覆,也許已經解決問題了。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.251.216.18 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1643113296.A.8D8.html
討論串 (同標題文章)
Python 近期熱門文章
PTT數位生活區 即時熱門文章