如何解决第三方包调用Fiona嵌入GDAL时的导入问题?
问题:让依赖
from osgeo import gdal的第三方包调用Fiona内置GDAL的方案 自2022年10月起,Fiona的wheel包已内置GDAL。但许多第三方包使用from osgeo import gdal调用GDAL时会失败。
复现示例
- 用Poetry创建Python 3.9.15(Linux环境)的虚拟环境:
poetry new dummy cd dummy poetry add geopandas richdem
- 运行以下脚本会抛出错误:
import richdem as rd dem = rd.LoadGDAL("dummy")
Exception: richdem.LoadGDAL() requires GDAL.
该问题并非richdem独有——所有使用from osgeo import gdal的第三方包都会出现此问题,richdem的__init__.py中确实使用了该导入语句。
已尝试的无效方案
先导入Fiona(它会在启动时修补GDAL环境变量),但问题仍未解决。
额外注意事项
若单独安装与Fiona 1.8.22内置版本一致的GDAL 3.4.3,会出现以下情况:
- 执行
rd.LoadGDAL("dummy")会触发正确的RuntimeError: dummy: No such file or directory - 执行
rd.LoadGDAL("a/real/tif_file.tif")会触发ModuleNotFoundError: No module named '_gdal_array'
这是另一个独立问题,且此时系统中存在两份相同版本的GDAL,显然不合理。
核心需求
如何让使用from osgeo import gdal的第三方包成功调用Fiona内置的GDAL?
内容的提问来源于stack exchange,提问作者tgrandje
相关产品推荐
相关产品推荐

