Windows conda环境终端可导入geopandas等包但Jupyter Lab加载报错问询
问题成因
- 环境变量继承异常:Windows系统中执行
conda activate s1时,会自动将s1环境下的Library/bin、Scripts目录追加到系统PATH变量中,终端启动的Python可以正常检索到GDAL、Fiona依赖的底层DLL文件。但Jupyter Lab启动后,内核如果没有正确继承激活环境的PATH变量,就会出现DLL查找失败的问题,这是rasterio报错DLL load failed的核心原因。 - 包版本兼容冲突:Python 3.6早已停止官方维护,conda-forge渠道针对Python 3.6的GIS类依赖包(GDAL、Fiona、rasterio、geopandas)的版本匹配校验已经不再更新,分开安装各个包很容易出现Fiona版本与底层GDAL版本不兼容的情况,直接导致
module 'fiona' has no attribute '_loading'报错。 - 内核绑定错位:若未给s1环境单独注册Jupyter内核,启动的Jupyter Lab默认内核可能指向base环境或其他环境的Python解释器,包搜索路径错位也会引发导入报错。
适配conda的解决方案
- 1 修正Jupyter内核绑定
确保在激活s1环境的状态下安装ipykernel,并将当前环境注册为Jupyter可用内核:
后续启动Jupyter Lab后,新建笔记本时选择名为conda activate s1 conda install ipykernel python -m ipykernel install --user --name s1 --display-name "Python (s1)"Python (s1)的内核即可,不要使用默认内核。 - 2 统一重装GIS依赖栈
不要分开安装各个GIS包,让conda自动处理版本依赖匹配,先卸载现有冲突包再统一安装:conda activate s1 conda remove --force geopandas rasterio fiona gdal conda install geopandas rasterio fiona gdal - 3 手动注入DLL搜索路径
如果完成前两步后仍有报错,可在Jupyter代码块最开头手动将s1环境的DLL目录加入系统路径:
执行上述代码后再导入geopandas、rasterio即可正常运行。import os # 替换为你自己的s1环境根路径,参考报错信息路径为 C:\Users\你的用户名\Anaconda3\envs\s1 env_root = r"C:\Users\xxx\Anaconda3\envs\s1" os.environ["PATH"] = f"{os.path.join(env_root, 'Library', 'bin')};{os.path.join(env_root, 'Scripts')};{os.environ['PATH']}" - 可选优化:如果没有强制使用Python 3.6的需求,建议创建环境时指定Python 3.8及以上版本,conda-forge对3.8+版本的GIS类包维护更完善,可从根源避免这类兼容问题。
内容的提问来源于stack exchange,提问作者GCGM
相关产品推荐
相关产品推荐

