在Ubuntu 16.04上安装Python GDAL 2.1

48

以下是我在安装gdal2.1时在UBUNTU虚拟机中使用的命令序列。我的虚拟机是UBUNTU 16.04 LTS(64位),我需要gdal2.1及其Python绑定程序以在Python中使用它。当前安装的Python版本是2.7.11+,我已经安装了numpy,因为我知道这对GDAL来说是必要的。接下来是命令行:

我在GDAL2.1的Pypi页面上找到的指令:

   antonio19812@antonio19812-VirtualBox:~$ sudo apt-get install libgdal1i

   libgdal1i is already the newest version (1.11.3+dfsg-3build2).

   antonio19812@antonio19812-VirtualBox:~$ sudo apt-get install libgdal1-dev

   libgdal1-dev is already the newest version (1.11.3+dfsg-3build2).

   antonio19812@antonio19812-VirtualBox:~$ sudo pip install gdal

   Collecting gdal Downloading GDAL-2.1.0.tar.gz (619kB) 100%   |████████████████████████████████| 624kB 247kB/s

   Installing collected packages: gdal

  Running setup.py install for gdal ... error


  Complete output from command /usr/bin/python -u -c "import setuptools, 


tokenize;file='/tmp/pip-build-_sHDUY/gdal/setup.py';


exec(compile(getattr(tokenize, 'open', open)(file).read().replace('\r\n',


'\n'), file, 'exec'))" install --record /tmp/pip-eOB65J-record/install-


record.txt --single-version-externally-managed --compile:


running install

running build

running build_py

creating build

creating build/lib.linux-x86_64-2.7

copying gdal.py -> build/lib.linux-x86_64-2.7

copying ogr.py -> build/lib.linux-x86_64-2.7

copying osr.py -> build/lib.linux-x86_64-2.7

copying gdalconst.py -> build/lib.linux-x86_64-2.7

copying gdalnumeric.py -> build/lib.linux-x86_64-2.7

creating build/lib.linux-x86_64-2.7/osgeo

copying osgeo/gdal.py -> build/lib.linux-x86_64-2.7/osgeo

copying osgeo/gdalconst.py -> build/lib.linux-x86_64-2.7/osgeo

copying osgeo/osr.py -> build/lib.linux-x86_64-2.7/osgeo

copying osgeo/__init__.py -> build/lib.linux-x86_64-2.7/osgeo

copying osgeo/ogr.py -> build/lib.linux-x86_64-2.7/osgeo

copying osgeo/gdal_array.py -> build/lib.linux-x86_64-2.7/osgeo

copying osgeo/gnm.py -> build/lib.linux-x86_64-2.7/osgeo

copying osgeo/gdalnumeric.py -> build/lib.linux-x86_64-2.7/osgeo

running build_ext

building 'osgeo._gdal' extension

creating build/temp.linux-x86_64-2.7

creating build/temp.linux-x86_64-2.7/extensions

x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/usr/include/python2.7 -I/usr/local/lib/python2.7/dist-packages/numpy/core/include -I/usr/include -c extensions/gdal_wrap.cpp -o build/temp.linux-x86_64-2.7/extensions/gdal_wrap.o
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
extensions/gdal_wrap.cpp:3085:22: fatal error: cpl_port.h: File o directory non 

esistente

compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

----------------------------------------

Command "/usr/bin/python -u -c "import setuptools, tokenize;file='/tmp/pip-build-_sHDUY/gdal/setup.py';exec(compile(getattr(tokenize, 'open', open)(file).read().replace('\r\n', '\n'), file, 'exec'))" install --record /tmp/pip-eOB65J-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-_sHDUY/gdal/

这就是我获得的内容。请注意,虚拟机上没有安装其他软件或包。希望您能帮助我,使用GDAL2.1非常重要。

我曾尝试在GIS部分寻求建议,但至今没有得到回复。

4个回答

91
我的建议是这样的: https://gis.stackexchange.com/a/193828/66527 下面是我复制的答案:
您可以从 GIS Internals 下载适用于Windows的GDAL 2.1。有一个安装程序和一个不需要安装的便携式版本。
Ubuntu 16.04的 UbuntuGIS-Stable PPA 提供了 GDAL 2.1
sudo add-apt-repository -y ppa:ubuntugis/ppa
sudo apt update 
sudo apt upgrade # if you already have gdal 1.11 installed 
sudo apt install gdal-bin python-gdal python3-gdal # if you don't have gdal 1.11 already installed 

请注意,Ubuntu 16.04预装的是Python 3.5版本,但默认使用Python 2.7版本。

3
同样适用于Ubuntu 14.04。 - mrgloom
1
GDAL 2.1现在可以在ubuntugis-stable中使用,所以我认为您可以更改第一行sudo add-apt-repository ppa:ubuntugis/ppa。 - bsm
1
@bsm,您能否直接编辑答案?目前我没有尝试的上下文。 - Akhorus
1
请注意,这对于Conda用户无效,因为python-gdal和python3-gdal安装到系统Python2和Python3中,而不是Conda软件包中。对于Conda用户,您可能需要类似于以下链接的东西:https://github.com/conda-forge/gdal-feedstock/issues/213#issuecomment-407449828 - Kyle McDonald
2
谢谢,这个很好用。我添加了python3-gdal并且运行了 sudo apt install gdal-bin python3-gdal python3-gdal - NEBEZ
显示剩余4条评论

13

"python-gdal"版本2.1.0需要gdal版本2.1.0。因此安装“libgdal1”版本1.11.3是不够的。获取gdal-2.1.0:http://download.osgeo.org/gdal/2.1.0/gdal-2.1.0.tar.gz

还需要安装约43个依赖项:$ sudo apt-get build-dep gdal

构建和安装gdal-2.1.0以及Python绑定:

$ cd gdal-2.1.0/
$ ./configure --prefix=/usr/
$ make
$ sudo make install
$ cd swig/python/
$ sudo python setup.py install

没有问题,使用Ubuntu 16.04 - 64位。



奇怪的是,我收到了一个错误 - gdal-2.1.0/.libs/libgdal.so: undefined reference to \kmldom::SerializePretty(boost::intrusive_ptrkmldom::Element const&)' - 请注意,在kmldom前面有一个反引号,但在const&)后面只有一个单引号。之前我遇到了两个错误,因为libgdal.so需要png_set_longjmp_fn(),这需要 libpng1.4+ - 基本安装似乎是 libpng1.2.54,当我安装了libpng16-dev后,第二个make` 错误消失了。 - GT.

2

你安装了 python-dev 吗?

在Ubuntu中从源码安装任何东西之前,我建议你先处理好构建依赖项。

sudo apt-get build-dep python-gdal

然后尝试运行安装程序。

1
sudo add-apt-repository ppa:ubuntugis/ppa && sudo apt-get update

sudo apt-get update

sudo apt-get install gdal-bin

sudo apt-get install libgdal-dev

export CPLUS_INCLUDE_PATH=/usr/include/gdal

export C_INCLUDE_PATH=/usr/include/gdal

pip install --global-option=build_ext --global-option="-I/usr/include/gdal/" GDAL==2.0.1

1
欢迎并感谢您的贡献,请考虑添加细节到您的答案中。 - txemsukr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接