Re: [問題] MEIPASS - No such file or directory er

看板Python作者 (lepenseur)時間2年前 (2022/01/25 20:21), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/4 (看更多)
※ 引述《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
文章代碼(AID): #1Xx-jGZO (Python)
文章代碼(AID): #1Xx-jGZO (Python)