DQinYuan / chinese_province_city_area_mapper

一个用于提取简体中文字符串中省,市和区并能够进行映射,检验和简单绘图的python模块
MIT License
1.65k stars 390 forks source link

对于pyinstaller打包后报错的问题 #44

Open chengzi0103 opened 4 years ago

chengzi0103 commented 4 years ago

@hanbinpro @DQinYuan

KeyErro: 'cpca.resources'

No module named 'cpca.resources'

ddxwltan commented 4 years ago

采用一个变通方法,首先将cpca模块安装的目录下将/cpca/resources目录下面的pca.csv剪切到/cpca目录下,然后删除resources目录,然后修改/cpca下面的init.py 文件的第27行: with resource_stream('cpca.resources', 'pca.csv') as pca_stream: 修改为: with resource_stream('cpca', 'pca.csv') as pca_stream: 保存退出 然后打包的时候 用此命令: pyinstaller.exe -D xxxx.py 完事之后,进入打包的文件夹,手动建立一个cpca文件夹,然后把前面的pca.csv文件拷贝到这个目录,齐活。打包后程序可以正常运行

PS.打包不要用 -F 参数,这样程序会解压到临时目录运行,因为pca.csv文件并不会被解压到临时目录,而系统又不允许程序自动拷贝文件进去,所以只能迂回用-D参数

chengzi0103 commented 4 years ago

好的 谢谢 大佬

smart-aiops commented 4 years ago

@hanbinpro @DQinYuan 你好,我在自己的项目中引用了cpca, 用如上方法修改了cpca。 我想把自己的项目打包成一个exe包含所有依赖,但是 -D 不会包含依赖在exe中,请问应该怎么做呢。

ddxwltan commented 4 years ago

我用 -F 打包,没问题

------------------ 原始邮件 ------------------ 发件人: "wt05001"<notifications@github.com>; 发送时间: 2020年3月17日(星期二) 下午5:43 收件人: "DQinYuan/chinese_province_city_area_mapper"<chinese_province_city_area_mapper@noreply.github.com>; 抄送: "Cheng Xi"<uefi@qq.com>; "Comment"<comment@noreply.github.com>; 主题: Re: [DQinYuan/chinese_province_city_area_mapper] 对于pyinstaller打包后报错的问题 (#44)

@hanbinpro @DQinYuan 你好,我在自己的项目中引用了cpca, 用如上方法修改了cpca。 我想把自己的项目打包成一个exe包含所有依赖,但是 -D 不会包含依赖在exe中,请问应该怎么做呢。

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

LoyalBenny commented 1 year ago

我也遇到相同的问题,对于我的项目可行的解决方法是: 使用pyinstaller的-add-data参数,linux环境下命令是 pyinstaller --add-data="path/to/cpca/resources:cpca/resources" -D xx.py path/to/cpca/即你安装cpca包的具体路径。 原理应该和 ddxwltan说的一样,只是应该不用修改cpca的__init__.py.