2014-11-24 40 views
3

我正在嘗試使用Python GDAL bindings。當通過pip天真地安裝綁定時,安裝失敗,出現error: 'VSIFTruncateL' was not declared in this scope,可能是由於安裝的頭文件和python綁定版本不匹配。 proposed solution elsewhere將通過pip安裝完全相同的版本。但是,我的系統有gdal-1.7.3,並且沒有1.7.3綁定。安裝1.7.1 bindings會導致編譯成功,但嘗試運行會導致undefined symbol: GDALRasterBandGetVirtualMem。因此,I installed 1.11.1 from source並編譯了針對它的最新綁定。編譯和安裝似乎工作,但進口不:Python gdal未定義符號GDALRasterBandGetVirtualMem

In [2]: import osgeo 
--------------------------------------------------------------------------- 
ImportError        Traceback (most recent call last) 
<ipython-input-2-26b16a6d02ad> in <module>() 
----> 1 import osgeo 

/export/data/home/gholl/venv/gerrit/lib/python3.4/site-packages/osgeo/__init__.py in <module>() 
    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)上,我不具有系統管理員權限。)

回答

6

如果已經安裝了GDAL版本,即使你已經對安裝在~/.local版本鏈接會出現此問題。

一個解決方案是在a Planet MYSQL post here給出:

在這種情況下,我們就可以告訴鏈接以這種方式預裝我們的新圖書館1.11.0在我們的外殼:

export LD_PRELOAD=/usr/local/lib/libgdal.so.1 

或者,在我的情況下,

export LD_PRELOAD="$HOME/.local/lib/libgdal.so.1" 

確實,這解決了這個問題。

0

我運行: 出口LD_PRELOAD =/usr/lib目錄/ libgdal.so.1 pythod命令之前,它是固定