Climada中engine模块导入失败问题求助(Python环境)
解决Climada engine模块导入KeyError: 'Stamen'问题
问题详情
- 运行环境:Windows系统、VS Code编辑器、Python 3.9.19、miniforge3创建的
climada_env虚拟环境 - 异常表现:Climada的hazard、petal、entity等模块可正常导入,但执行代码
from climada.engine import Impact, ImpactCalc时触发以下错误:
KeyError Traceback (most recent call last)
File c:\Users\XXX\miniforge3\envs\climada_env\lib\site-packages\xyzservices\lib.py:44, in Bunch.getattr(self, key)
43 try:
---> 44 return self.getitem(key)
45 except KeyError as err:KeyError: 'Stamen'
- 已尝试操作:手动导入xyzservies、更新该库,问题未解决
可行解决方案
1. 降级xyzservies至兼容版本
Stamen是xyzservies提供的地图瓦片服务,新版本可能移除了该服务导致Climada引用失败。执行以下命令降级:
pip install xyzservices==2023.10.1
2. 修改Climada中引用Stamen的代码(临时修复)
找到Climada engine模块中调用Stamen的位置(通常在可视化相关代码段),将Stamen替换为其他可用瓦片服务,例如OpenStreetMap:
原代码示例:
from xyzservices import Stamen # 后续使用Stamen的代码
修改为:
from xyzservices import providers # 替换为OpenStreetMap瓦片服务 tile_layer = providers.OpenStreetMap.Mapnik
3. 重新安装Climada核心包
确认虚拟环境依赖完整性,卸载并重新安装Climada相关包:
pip uninstall climada-core climada-engine -y pip install climada-core climada-engine
内容的提问来源于stack exchange,提问作者LFG
相关产品推荐
相关产品推荐

