[问题] MEIPASS - No such file or directory er

楼主: imhandmore (imhandmore)   2022-01-23 15:25:07
我用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
作者: lycantrope (阿宽)   2022-01-23 16:35:00
--add-data应该可以解决?你是怎么指定path?
楼主: imhandmore (imhandmore)   2022-01-23 17:26:00
因为他说我缺少 s2tw.json,所以我找到存放这个json的路径去adddata整个目录我用 pyinstaller -F --add-data "C:/Python38/Lib/site-packages/opencc/config;config/" 档案名称.py
作者: ckbtlin318 (59分当)   2022-01-23 18:33:00
https://tinyurl.com/yb3zqcgg可以试试看这篇下方回答
作者: lycantrope (阿宽)   2022-01-23 19:29:00
~"~, 用venv弄个独立环境试试?https://docs.python.org/3.8/tutorial/venv.html
作者: poototo (poototo)   2022-01-24 00:11:00
;opencc/config" 目标path改这样试试因为实际读取时是去读 MEI151842\\opencc\\config
作者: lepenseur (lepenseur)   2022-01-25 10:10:00
你打包执行档,应该考虑目标平台怎么读取到这个 json档你要安装的目标平台,基本上User的AppData不会有你需要的档案,因为那只在你的开发电脑上安装,除非你自己写安装精灵把档案放进AppData。刚刚看了一下opened 的介绍,你需要的这个档案,应该是可以放在专案目录下,用相对路径去读取就好。包装执行档时,直接用 —add-data 就可以了(自动选字错字了,不是opened,是opencc)如果你没打算写安装精灵,建议你把东西都放在专案目录下,用相对路径去读取。因为你安装的目标平台,使用者名称根本不能保证完全一样,你的绝对路径一定常常出问题。(就以你的写法来说,档案的绝对路径在 Claude 这个使用者的 AppData 资料夹中,但安装这个执行档的使用者,名字会这么巧一样是Claude 吗?不一样,那当然就找不到档案囉)
作者: poototo (poototo)   2022-01-25 11:55:00
le大对sys._MEIPASS的动态路径观念要参考一下
作者: lepenseur (lepenseur)   2022-01-25 17:24:00
感觉我好像讲太长了,应该单独开一篇回复比较好,哈哈哈

Links booklink

Contact Us: admin [ a t ] ucptt.com