我用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
--add-data应该可以解决?你是怎么指定path?
因为他说我缺少 s2tw.json,所以我找到存放这个json的路径去adddata整个目录我用 pyinstaller -F --add-data "C:/Python38/Lib/site-packages/opencc/config;config/" 档案名称.py
作者:
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:00le大对sys._MEIPASS的动态路径观念要参考一下
作者: lepenseur (lepenseur) 2022-01-25 17:24:00
感觉我好像讲太长了,应该单独开一篇回复比较好,哈哈哈