Python gdal неопределенный символ GDALRasterBandGetVirtualMem

Я пытаюсь использовать привязки 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)
<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), к которой у меня нет доступа системного администратора.)


person gerrit    schedule 24.11.2014    source источник


Ответы (2)


Если версия gdal уже установлена, эта проблема возникнет, даже если вы связались с версией, установленной в ~/.local.

Решение приведено в сообщении Planet MYSQL:

В этом случае мы можем указать компоновщику предварительно загрузить нашу новую библиотеку 1.11.0 в нашу оболочку следующим образом:

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

Или, в моем случае,

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

Действительно, это решает проблему.

person gerrit    schedule 25.11.2014
comment
Это спасло мне жизнь. Не смог избавиться от всех остатков исходной установки GDAL и чуть не сошел с ума. Спасибо большое! - person pat-s; 01.07.2019

Я запускаю: export LD_PRELOAD=/usr/lib/libgdal.so.1 перед командой pythod, это исправлено

person Jeff Wang    schedule 11.01.2017