You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Conda环境与PyCharm已配置GDAL,运行代码仍报_gdal模块未找到/DLL加载失败错误

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,这个是最快的排查方法!

火山引擎 最新活动