导入basemap时出现KeyError: 'PROJ_LIB'错误的解决咨询
解决Basemap导入时的KeyError: 'PROJ_LIB'问题
这个问题我之前帮好几个开发者排查过,本质是basemap 1.2.1和新版pyproj的兼容性冲突——pyproj从2.0版本开始就移除了PROJ_LIB这个环境变量的自动设置,但basemap 1.2.1的代码还在硬编码读取这个变量,所以才会触发KeyError。下面给你三种可行的解决思路:
方法一:手动指定PROJ_LIB路径
这是最快的临时解决方案,不需要改动库版本。你只需要在导入Basemap之前,手动告诉Python proj数据文件的位置(注意不是site-packages里的库文件路径,而是anaconda自带的proj地理数据目录):
import os # 替换成你anaconda路径下的proj数据目录,一般是这个结构 os.environ['PROJ_LIB'] = r'C:\users\paisa\anaconda3\Library\share\proj' from mpl_toolkits.basemap import Basemap
这个路径里存放的是proj需要的地理坐标系数据文件,basemap加载时必须读取这些文件才能正常工作。
方法二:降级pyproj到兼容版本
如果不想每次都手动设置环境变量,可以把pyproj降级到1.x版本(basemap 1.2.1和pyproj 1.x是官方兼容的)。打开你的Anaconda Prompt,激活对应的环境后执行:
# 用conda安装,避免依赖冲突 conda install pyproj==1.9.6
如果conda安装失败,也可以用pip尝试:
pip install pyproj==1.9.6 --force-reinstall
降级完成后,重新运行导入代码,应该就能正常加载Basemap了。
方法三:迁移到Cartopy(长期推荐)
顺便提一句,Basemap已经停止维护很多年了,官方也推荐用Cartopy作为替代方案。Cartopy和新版pyproj、matplotlib兼容性更好,功能也更完善。如果你的项目还处于初期阶段,建议考虑迁移过去,避免后续再遇到类似的版本兼容问题。
内容的提问来源于stack exchange,提问作者Hermes Morales
相关产品推荐
相关产品推荐

