前言
最近做空間數據ETL工具時需要在服務器上配置python環境,在安裝GDAL包時各種報錯,google查閱了諸多資料,總結安裝步驟如下:
1. 源碼包下載
GDAL需要依賴PROJ.4和GEOS。 依次下載準備好PROJ.4, GEOS, GDAL的源碼包並解壓。
tar xvf proj-6.2.1.tar.gz
tar xvf geos-3.7.3.tar.bz2
tar xvf GDAL-3.0.4.tar.gz
安裝
- 安裝proj.4,
進入proj.4的解壓目錄下,依次執行:
./configure
make
make install
- 安裝geos,
進入geos的解壓目錄下,依次執行:
./configure
make
make install
- 安裝GDAL,
進入geos的解壓目錄下,依次執行:
./configure
make
make install
然後進入 gdal解壓文件的swig/python/目錄下,執行:
python3 setup.py build
python3 setup.py install
執行完畢後,安裝成功。
驗證
驗證是否可導入gdal的相關包,發現報錯:
>> from osgeo import ogr
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.7/site-packages/GDAL-3.0.4-py3.7-linux-x86_64.egg/osgeo/__init__.py", line 41, in <module>
_gdal = swig_import_helper()
File "/usr/local/lib/python3.7/site-packages/GDAL-3.0.4-py3.7-linux-x86_64.egg/osgeo/__init__.py", line 24, in swig_import_helper
_mod = imp.load_module('_gdal', fp, pathname, description)
File "/usr/local/lib/python3.7/imp.py", line 242, in load_module
return load_dynamic(name, filename, file)
File "/usr/local/lib/python3.7/imp.py", line 342, in load_dynamic
return _load(spec)
ImportError: libgdal.so.26: cannot open shared object file: No such file or directory
查了一下錯誤原因,原來是系統不知道GDAL共享庫的加載路徑。在~/.bashrc中加入一行: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
,然後執行source .bashrc
。問題解決,大功告成。