导入cartopy时触发‘Fatal Python error: Segmentation fault’该如何解决?
导入Cartopy时触发Segmentation Fault的原因与解决办法
问题场景
使用Spyder 5.3.3搭配Python 3.10,执行import cartopy时触发致命段错误,错误栈如下:
import cartopy Fatal Python error: Segmentation fault Main thread: Current thread 0x00000001105ae600 (most recent call first): File "/Users/xushan/opt/anaconda3/envs/py310/lib/python3.10/site-packages/shapely/geometry/polygon.py", line 54 in __init__ File "/Users/xushan/opt/anaconda3/envs/py310/lib/python3.10/site-packages/cartopy/crs.py", line 2904 in __init__ File "/Users/xushan/opt/anaconda3/envs/py310/lib/python3.10/site-packages/cartopy/crs.py", line 2926 in <module> File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed File "<frozen importlib._bootstrap_external>", line 883 in exec_module File "<frozen importlib._bootstrap>", line 688 in _load_unlocked File "<frozen importlib._bootstrap>", line 1006 in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 1027 in _find_and_load File "/Users/xushan/opt/anaconda3/envs/py310/lib/python3.10/site-packages/cartopy/__init__.py", line 107 in <module> File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed File "<frozen importlib._bootstrap_external>", line 883 in exec_module File "<frozen importlib._bootstrap>", line 688 in _load_unlocked File "<frozen importlib._bootstrap>", line 1006 in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 1027 in _find_and_load File "/var/folders/sk/q1bd_nkn1z345sbmdty96hpn6_w5dn/T/ipykernel_26154/823226011.py", line 1 in <module> Restarting kernel...
错误原因
从错误栈追踪,问题根源在Shapely库的多边形初始化环节,Cartopy依赖Shapely处理几何图形,段错误主要由以下情况导致:
- Shapely与Cartopy版本不兼容,Python 3.10属于较新版本,部分旧版依赖库对其支持不完善
- Conda环境中底层依赖(如GEOS、GDAL)的二进制编译版本冲突
- Spyder内核缓存与环境依赖库加载冲突
解决办法
1. 重新安装兼容版本的Cartopy与Shapely
优先使用conda-forge源安装,该源的包针对Python 3.10做了适配,兼容性更好:
conda remove cartopy shapely conda install -c conda-forge cartopy shapely python=3.10
2. 修复底层依赖库版本匹配问题
检查GEOS和GDAL版本,确保版本满足兼容要求(GEOS≥3.9,GDAL≥3.4):
conda list geos gdal
若版本过低,单独更新:
conda install -c conda-forge geos>=3.9 gdal>=3.4
3. 重置Spyder内核缓存
段错误可能由内核缓存异常导致,执行以下步骤:
- 关闭Spyder
- 删除内核缓存文件:
rm -rf /var/folders/sk/q1bd_nkn1z345sbmdty96hpn6_w5dn/T/ipykernel_*
- 重新启动Spyder,重启内核后再次尝试导入Cartopy
4. 创建全新Conda环境
若上述方法无效,构建干净的环境排除冲突:
conda create -n py310-cartopy python=3.10 conda activate py310-cartopy conda install -c conda-forge cartopy spyder
使用新环境启动Spyder测试导入操作。
内容的提问来源于stack exchange,提问作者Xu Shan
相关产品推荐
相关产品推荐

