导入GeoPandas包时触发UnicodeDecodeError重复报错问题咨询
问题表现
- 截至昨日GeoPandas可正常使用,今日执行
import geopandas as gpd语句加载库时,会重复出现20次相同报错 - 报错内容:
UnicodeDecodeError Traceback (most recent call last) UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe3 in position 80: invalid continuation byte
- 报错规律:
- 重新运行当前导入单元格时不会弹出该报错
- 每次首次运行调用GeoPandas的单元格时都会再次出现上述提示
- 报错弹出后GeoPandas相关命令可正常执行,功能不受影响
- 对应报错Traceback指向库导入阶段的文件读取逻辑
问题根因
该报错是GeoPandas首次导入时,自动扫描环境内投影元数据、配置文件的过程中,读取到了非UTF-8编码的文件(常见为中文路径下的文件、带中文字符的自定义投影.prj文件、本地写入的GBK编码配置项)触发的解码异常:
- 首次导入需要全量扫描所有关联元数据,因此会重复弹出多次报错
- 导入完成后相关元数据已加载到内存,重跑单元格不会重复触发扫描流程,因此不会弹错
- 解码失败的是非核心必需的元数据项,因此不会阻断库的加载和后续功能运行
解决方案
按操作成本从低到高选择即可:
- 快速屏蔽提示(不影响正常使用)
在导入GeoPandas前添加告警过滤代码,直接屏蔽导入阶段的解码类报错输出:
import warnings warnings.filterwarnings("ignore", category=UnicodeDecodeError) import geopandas as gpd
- 升级依赖修复编码识别问题
GeoPandas依赖的IO库旧版本对中文系统下的本地文件编码识别存在bug,升级到最新版即可修复:
pip install --upgrade pyogrio fiona geopandas
- 手动修复异常编码文件
如果升级后仍有报错,检查近期是否在工作目录、GeoPandas配置目录下新增了带中文字符的投影文件、自定义配置文件,将对应文件另存为UTF-8编码即可彻底解决。
内容的提问来源于stack exchange,提问作者Oalvinegro
相关产品推荐
相关产品推荐

