我正在尝试使用Python GDAL绑定.当通过pip天真地安装绑定时,安装失败并出现错误:'VSIFTruncateL'未在此范围内声明,可能是由于安装的标头和python绑定版本不匹配.该建议的解决方案在别处是通过PIP安装版本完全相同.但是,我的系统有gdal-1.7.3
,并且没有1.7.3绑定.安装1.7.1绑定会导致编译成功,但尝试运行导致undefined symbol: GDALRasterBandGetVirtualMem
.因此,我从源代码安装了1.11.1并编译了最新的绑定.编译和安装似乎有效,但导入不会:
In [2]: import osgeo --------------------------------------------------------------------------- ImportError Traceback (most recent call last)in () ----> 1 import osgeo /export/data/home/gholl/venv/gerrit/lib/python3.4/site-packages/osgeo/__init__.py in () 19 fp.close() 20 return _mod ---> 21 _gdal = swig_import_helper() 22 del swig_import_helper 23 else: /export/data/home/gholl/venv/gerrit/lib/python3.4/site-packages/osgeo/__init__.py in swig_import_helper() 15 if fp is not None: 16 try: ---> 17 _mod = imp.load_module('_gdal', fp, pathname, description) 18 finally: 19 fp.close() /export/data/home/gholl/venv/gerrit/lib64/python3.4/imp.py in load_module(name, file, filename, details) 241 return load_dynamic(name, filename, opened_file) 242 else: --> 243 return load_dynamic(name, filename, file) 244 elif type_ == PKG_DIRECTORY: 245 return load_package(name, filename) ImportError: /export/data/home/gholl/venv/gerrit/lib/python3.4/site-packages/osgeo/_gdal.cpython-34m.so: undefined symbol: GDALRasterBandGetVirtualMem
我现在不知所措.我还可以尝试使用什么gdal
以及它的Python绑定?
(系统是Scientific Linux release 6.6 (Carbon)
我没有系统管理员访问权限的.)
如果已安装gdal版本,即使已链接到安装的版本,也会出现此问题~/.local
.
这里有一个解决方案:Planet MYSQL帖子:
在这种情况下,我们可以告诉链接器以这种方式在我们的shell中预加载我们的新1.11.0库:
export LD_PRELOAD=/usr/local/lib/libgdal.so.1
或者,就我而言,
export LD_PRELOAD="$HOME/.local/lib/libgdal.so.1"
实际上,这解决了这个问题.