PyCharm中rasterio与GDAL DLL加载失败问题求助
解决PyCharm中导入rasterio时DLL加载失败的问题
我之前也碰到过一模一样的情况——同一个conda环境在Jupyter里用rasterio顺风顺水,到PyCharm就栽在DLL找不到的错误上。问题根源其实出在环境变量的加载差异上,Jupyter会自动继承conda环境的完整路径配置,但PyCharm有时候会“漏掉”关键的DLL目录。下面是我亲测有效的解决步骤:
1. 先确认PyCharm真的用对了conda环境
别笑,这是最容易忽略的点:
- 打开
File > Settings > Project: [你的项目名] > Python Interpreter - 检查列表里的解释器是不是你搭建的那个conda环境(路径应该是
你的conda安装目录\envs\你的环境名\python.exe) - 如果不是,点击右上角的齿轮图标,选择
Add > Conda Environment > Existing environment,找到对应环境的python.exe,确认后应用。
2. 手动给PyCharm的运行配置添加DLL路径
conda安装的GDAL、rasterio依赖的DLL都在环境的Library\bin目录下,PyCharm默认没把这个路径加入系统PATH,导致加载失败:
- 点击
Run > Edit Configurations,选中你要运行的脚本/项目 - 找到
Environment variables一栏,点击右侧的编辑按钮(小铅笔图标) - 在弹出的窗口里,找到
PATH变量,把你的conda环境的Library\bin路径加进去,比如C:\Users\你的用户名\miniconda3\envs\gis_env\Library\bin,一定要放在PATH的最前面,避免和系统里的其他GDAL版本冲突 - 保存配置,重新运行脚本。
3. 用PyCharm的Terminal激活环境后运行
如果上面的方法还不行,可以试试绕开PyCharm的默认路径配置:
- 打开PyCharm底部的Terminal面板
- 先执行
conda activate 你的环境名(如果是Windows,可能需要先运行conda init cmd.exe重启Terminal后再激活) - 然后直接用
python 你的脚本名.py运行,这样Terminal会完全继承conda环境的所有环境变量,肯定能找到DLL。
4. 重装rasterio和GDAL确保依赖完整
有时候conda环境的依赖可能有缺失,特别是如果混合用了pip和conda安装的话:
- 激活你的conda环境,执行
conda uninstall rasterio gdal - 然后用conda-forge重新安装:
conda install -c conda-forge rasterio gdal - 确保安装过程没有报错,然后再回到PyCharm测试。
为什么Jupyter没问题?
简单说,Jupyter的kernel是直接在conda环境里启动的,启动时会自动加载conda环境的所有环境变量(包括Library\bin的路径),所以能顺利找到依赖的DLL。而PyCharm默认只把conda环境的Scripts和bin目录加入PATH,漏掉了Library\bin,这就是差异所在。
内容的提问来源于stack exchange,提问作者arsenal88




