Conda环境与PyCharm已配置GDAL,运行代码仍报_gdal模块未找到/DLL加载失败错误
这种情况我之前踩过好几次坑!明明conda list、PyCharm解释器、gdalinfo都显示GDAL没问题,一跑代码就报DLL加载失败或者找不到_gdal模块,核心原因基本都是环境变量没同步或者GDAL的C底层库和Python绑定版本不兼容,给你几个我亲测有效的解决步骤:
1. 让PyCharm完全继承Conda环境的环境变量
Windows下PyCharm默认启动时可能不会自动加载conda环境的PATH变量,而GDAL的DLL都在conda环境的Library\bin目录里,PyCharm找不到就会报DLL错误。最快的验证方法:
- 关闭所有PyCharm窗口
- 打开Anaconda Prompt,激活你的环境:
conda activate tiles_generator - 从命令行启动PyCharm(比如输入
pycharm,如果是社区版就输pycharm-community,或者直接输PyCharm的完整安装路径,比如C:\Program Files\JetBrains\PyCharm Community Edition 2024.2\bin\pycharm64.exe) - 启动后直接跑你的代码,大概率能解决
如果不想每次都从命令行启动,也可以在PyCharm的Run配置里手动加环境变量:
- 打开
Run > Edit Configurations - 选中你的脚本配置,在
Environment variables里点编辑按钮 - 添加一条:
PATH=C:\Users\Admin\.conda\envs\tiles_generator\Library\bin;$PATH(把你的conda环境bin路径放最前面)
2. 重新安装GDAL相关包,强制channel一致性
有时候混合conda默认channel和conda-forge的包会导致依赖冲突,比如GDAL的C库是conda-forge的,但某个间接依赖是默认channel的,版本不匹配就会出问题。可以彻底重建环境:
# 先删除旧环境 conda deactivate conda remove --name tiles_generator --all -y # 新建环境,严格用conda-forge的包 conda create -n tiles_generator python=3.11 gdal=3.10 rasterio -c conda-forge --strict-channel-priority -y
用--strict-channel-priority确保所有依赖都从conda-forge拉取,避免版本不兼容的问题。
3. 检查GDAL Python绑定文件是否存在
如果上面两步都没用,去你的conda环境的site-packages目录看看:C:\Users\Admin\.conda\envs\tiles_generator\Lib\site-packages\osgeo
里面必须有_gdal.pyd这个文件(Windows下的Python扩展模块,相当于Linux的.so文件),如果没有,说明GDAL的Python绑定没安装成功,需要强制重新安装:
conda activate tiles_generator conda install swig -c conda-forge -y conda install --force-reinstall gdal=3.10.3 -c conda-forge -y
swig是生成GDAL Python绑定的工具,先装swig再重装GDAL能确保绑定文件正确生成。
4. 验证PyCharm使用的Python环境是否正确
有时候PyCharm会偷偷用系统Python或者其他环境的Python,你可以在PyCharm的Terminal里运行这段代码确认:
import sys print("当前Python路径:", sys.executable) print("当前Python路径列表:", sys.path)
输出的Python路径必须是C:\Users\Admin\.conda\envs\tiles_generator\python.exe,而且sys.path里必须包含C:\Users\Admin\.conda\envs\tiles_generator\Lib\site-packages,如果不是,说明PyCharm的解释器配置错了,去File > Settings > Project: xxx > Python Interpreter重新选你的conda环境。
另外,也可以直接在Terminal里跑你的脚本:
python D:\work\code\tiles_generator\tiles_pyramid_generator.py
如果命令行能跑成功,那就是PyCharm的Run配置有问题;如果命令行也报错,那就是环境本身的问题,回到步骤2重建环境。
最后补充个小细节
我当时碰到这个问题,就是因为PyCharm的PATH里没包含conda环境的Library\bin,从命令行启动PyCharm后,环境变量继承了conda的配置,直接就跑通了。你可以先试试步骤1,这个是最快的排查方法!




