作者lepenseur (lepenseur)
标题Re: [问题] MEIPASS - No such file or directory er
时间Tue Jan 25 20:21:34 2022
※ 引述《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://webptt.com/cn.aspx?n=bbs/Python/M.1643113296.A.8D8.html