为何gdalinfo --version在终端与Python中输出结果不同?
为什么
gdalinfo --version和Python中GDAL版本输出差异这么大? 嘿,这个问题其实挺常见的,核心原因是你终端里的GDAL和Python环境里的GDAL根本不是同一个库实例!下面给你拆解具体原因和验证方法:
1. 环境隔离是罪魁祸首
终端里的gdalinfo --version调用的是系统全局安装的GDAL(比如你通过apt、brew或者手动编译安装的),也就是你看到的GDAL 2.2.3, released 2017/11/20版本。而你的Python环境(不管是用virtualenv、conda还是pyenv管理的)大概率是独立隔离的,里面单独安装了另一版本的GDAL Python绑定——你看到的输出“6”,大概率是这个绑定版本的一部分(比如GDAL 3.6.x的次版本号,或者你不小心获取了配套的PROJ库版本,PROJ 6.x是很常见的搭配)。
2. 版本获取方式的差异
终端的gdalinfo --version直接输出完整的版本字符串,但你在Python里可能用了错误的获取方式:
- 如果你用了
gdal.VersionInfo('RELEASE_MINOR'),那对于GDAL 3.6.x版本会单独返回次版本号6; - 如果你误调用了PROJ库的版本(比如
from osgeo import proj; print(proj.__version__)),那PROJ 6.x也会输出6; - 要在Python里获取GDAL的完整版本,正确的代码应该是这样:
from osgeo import gdal # 方法1 print(gdal.__version__) # 方法2 print(gdal.VersionInfo())
3. 快速验证方法
你可以通过路径对比确认两个环境用的是不是同一个GDAL:
- 在Python里执行:
from osgeo import gdal print(gdal.__file__) - 在终端里执行:
which gdalinfo
如果这两个路径不在同一个目录下,就实锤了是两个独立的GDAL库。
内容的提问来源于stack exchange,提问作者Sumit Saha
相关产品推荐
相关产品推荐

