Jupyter Notebook导入rioxarray报contextlib无nullcontext属性错误
错误原因
contextlib.nullcontext 是Python 3.7版本才新增的内置功能,你当前使用的Python 3.6.13版本不包含该属性,而你安装的rioxarray v0.4.0版本依赖Python 3.7及以上运行环境,因此导入时触发属性缺失报错。
解决方案
提供两种可行方案,按需选择即可:
方案一:升级Python版本(推荐)
如果没有必须使用Python 3.6的特殊需求,升级Python版本到3.7及以上即可解决版本兼容问题,操作步骤如下:
- 激活你的Anaconda虚拟环境:
conda activate "Raster Analysis" - 直接升级Python到3.8版本(该版本和你当前使用的其他依赖兼容性更好):
conda install python=3.8 - 升级完成后重装rioxarray即可:
conda install rioxarray=0.4.0
也可以直接新建干净的虚拟环境一次性安装所有依赖,避免版本冲突:
conda create -n raster_env python=3.8 rioxarray=0.4.0 rasterio=1.10 geopandas seaborn jupyter
方案二:降级rioxarray版本
如果必须保留当前Python 3.6环境,将rioxarray降级到最后一个支持Python 3.6的版本即可:
- 激活虚拟环境后卸载现有rioxarray:
pip uninstall rioxarray - 安装兼容Python3.6的rioxarray 0.3.1版本:
pip install rioxarray==0.3.1
额外注意事项
你提供的代码中缺少matplotlib的导入语句,运行时会触发NameError: name 'plt' is not defined报错,在代码导入部分添加一行即可:
import matplotlib.pyplot as plt
操作完成后重新执行import rioxarray验证,无报错即为修复完成。
内容的提问来源于stack exchange,提问作者MJM
相关产品推荐
相关产品推荐

