我正在尝试从虚拟环境(Ubuntu)中的pip
pip install gdal
安装gdal。它失败,因为找不到cpl_port.h
extensions/gdal_wrap.cpp:2853:22: fatal error: cpl_port.h: No such file or directory
compilation terminated
但是GDAL已正确安装,并且头文件位于
/usr/include/gdal/cpl_port.h
。是否需要为GDAL设置一些环境变量,以便pip查找头文件?#1 楼
selimnairb的答案很接近,但是除非安装了libgdal-dev,否则您将没有标题:sudo apt-get install libgdal-dev
完成后,
export CPLUS_INCLUDE_PATH=/usr/include/gdal
export C_INCLUDE_PATH=/usr/include/gdal
,然后
pip install GDAL
编译运行完成,我的虚拟环境中有GDAL。 ew!
(编辑2018)注意:
为确保安装正确的版本并避免出现任何问题。
使用
gdal-config --version
检索该版本。然后:
pip install GDAL==version
评论
似乎是唯一可行的解决方案。
– bozdoz
2014年3月25日16:46
在另一个系统上进行了尝试,我认为这个加@nickves答案的组合实际上是在做什么。
– bozdoz
2014年3月31日23:33
很好。如果系统和python软件包中GDAL的安装版本不同,则它将失败。解决方案是在系统中找到GDAL版本,并指示pip安装相关的python软件包版本。以我的情况(Ubuntu 14.04)均为10.0,因此有助于$ pip安装GDAL == 10.0
– Jan Vlcinsky
2014年12月3日在22:17
我可以通过pip install GDAL == 1.10.0在Ubuntu 16.04上确认这一点。
–beruic
16年8月11日在15:38
在AWS Linux上,它对我有用,但我必须使用GDAL lib路径和$> sudo ldconfig更新LD_LIBRARY_PATH。
–herve
16年11月24日在11:07
#2 楼
由于某种原因找不到头文件。也许您是在虚拟环境中操作,或者由于某种原因它们不在应有的位置。无论如何,您都可以在通过pip安装gdal时指定包含目录。首先下载python的gdal:
pip install --no-install GDAL
在更高版本的pip中(> = 9.0.0)
pip install --no-install
不存在:pip download GDAL
,然后指定标头的位置:
python setup.py build_ext --include-dirs=/usr/include/gdal/
然后安装它:
pip install --no-download GDAL
在更高版本的pip(> = 9.0.0)中不存在
pip install --no-download
:sudo python setup.py install --include-dirs=/usr/include/gdal
这是安装gdal python的另一种方法:
打开IDLE之后的
$ sudo apt-add-repository ppa:ubuntugis/ubuntugis-unstable
$ sudo apt-get update
$ sudo apt-get install python-gdal
:
from osgeo import gdal
,您一切顺利!
评论
嗨,谢谢您的回答,但是我真的需要一种通过pip进行安装的方法,因为我将在CI流程中使用virtualenv创建隔离的环境。
–凯文
2012年7月8日在22:26
当您运行“ gdal-config --version”和“ gdal-config --libs”时,输出是什么?
–尼克斯
2012年7月9日在9:40
GDAL v1.9.1。 gdal-config --libs-> -L / usr / lib -lgdal
–凯文
2012年7月9日17:35
@nickves我正在尝试在Ubuntu中使用virtualenvwrapper安装GDAL,当我尝试第一行时:pip install --no-install GDAL,出现错误:__main __。gdal_config_error:[Errno 2]没有这样的文件或目录?
–TheJollySin
13年3月23日在18:36
我最近在OSX上安装GDAL时过得很愉快。当前,用于GDAL的最新Python绑定取决于2.1,但自制软件中可用的最新GDAL是1.11.3,而用于GDAL Complete的最新版本是1.11.4。我通过自制软件安装,brew install gdal并使用了GDAL Python软件包的旧版本:pip install --global-option = build_ext --global-option =“-L / usr / local / include / gdal /”'gdal == 1.9.1'
– TestSubject
16 Jun 28'在0:02
#3 楼
在遵循了此建议的子集之后,这就是我如何安装Python GDAL 1.11.0(该解决方案应与版本无关,请参阅下文)的方法,以便通过pip在Ubuntu 14.04上工作:安装依赖项:
sudo apt-get install libgdal-dev libgdal1h
通过传递include进行pip安装路径(用于系统范围安装的带有
sudo
的前缀),并指示pip安装与系统安装的GDAL版本匹配的版本:pip install --global-option=build_ext --global-option="-I/usr/include/gdal" GDAL==\`gdal-config --version\`
pre >评论
来自selimnairb和Paul Whipp的更高评分的答案在Ubuntu 15.10上对我不起作用,而这个答案对我有用。
–rhunwicks
15年11月17日在10:34
在从@nickves答案中添加不稳定的存储库后,第二行对我有用。谢谢大家!
–帕特里克·威廉姆斯(Patrick Williams)
16年5月24日在19:54
谢谢,这最终对我有用。尽管在尝试尽可能严格地坚持cartodb安装时必须进行一些修改,但最终还是将其用作我的最终工作安装命令:sudo pip install --no-use-wheel -r python_requirements.txt- -global-option = build_ext --global-option =“-I / usr / include / gdal” python_requirements.txt指定了gdal的旧版本。我怀疑老实说这会很重要,但是整个pip安装集成功完成了。 U 12.04x64
–vaxhax
16年7月25日在21:32
#4 楼
在Linux上将Python软件包gdal
安装到virualenv GDAL
为GEO相关操作提供了很好的工具包。但是,在Linux上将其安装到virtualenv并不是一件容易的事。
此食谱描述了如何做到这一点。
note
我在Python包中使用小写
gdal
,而在一般系统范围的库中使用大写
GDAL
。需求
允许使用osgeo库(通过
gdal
Python软件包安装)到virtualenv
允许在Linux Ubuntu上安装
安装方法
有多种方法用于安装。一个需要编译
,并且要花几分钟的时间。
另一个需要使用
pygdal
程序包的轮包,而且速度非常快。 关于
GDAL
软件包和版本GDAL
是用于GEO相关计算的基于C(++)的通用库。 > GDAL
实用程序可以在整个系统范围内安装,这使得共享库可用,但不能安装Python软件包本身。GDAL
的版本不同,每个Linux发行版可能< 默认安装其他版本。
Python软件包
gdal
需要编译,并且在基于Linux的系统上安装并不容易,因为它期望设置很少的环境变量。这使得安装到virtualenv更加困难。 > Python软件包gdal
替代了GDAL
,后者完全安装了与pygdal
相同的东西,但是以更加虚拟化的方式进行安装。gdal
的版本反映了相关的gdal
版本。因此,在系统中安装pygdal
1.10.1版本时,您应该安装
GDAL
版本1.10.1。Python软件包
GDAL
(以及pygdal
)使用名为gdal
的root python软件包。并具有一组子模块,其中一个是pygdal
。如果需要,可以安装和使用默认版本的
osgeo
以外的其他子模块。这超出了本说明的范围。车轮包可以交叉编译,这也超出范围。
将
osgeo.gdal
安装到系统中/>由于
GDAL
需要存在GDAL
共享库,因此必须先安装。
假设尚未安装
pygdal
,则致电GDAL
会抱怨并给您提示如何跟进:
$ gdal-config --version
The program 'gdal-config' is currently not installed. You can install it by typing:
sudo apt-get install libgdal-dev
按照提示进行安装:
$ sudo apt-get install libgdal-dev
每个发行版都可以使用
GDAL
的不同版本。要找出使用哪个,请使用:
$ gdal-config --version
1.10.1
现在您已经知道,已安装
gdal-config
且版本为1.10.1(版本可以
从源代码包安装
GDAL
(需要编译)当前,仅在tar.gz软件包中提供
GDAL
,该软件包包含软件包源,需要编译。
,假设
pygdal
的版本为pygdal
,并且我们的virtualenv已被激活:$ pip install pygdal==1.10.1
它可能需要一个虽然需要完成,但是否需要numpy,这可能还需要一些编译。只需等待。
检查是否已安装:
$ pip freeze|grep pygdal
pygdal==1.10.1.0
从现在开始,您可以根据需要在Python代码中使用osgeo软件包。
与通过
GDAL
Python安装软件包的方式完全相同。为
1.10.1
创建滚轮软件包注意,则必须为完全相同的车轮包创建
架构,必须匹配:
CPU架构
OS(Linux / Windows)
在我们的情况下,它还必须匹配
gdal
的版本可以根据需要在虚拟环境中进行以下步骤。
首先,确保已安装轮包:
$ pip install wheel
假设您已经安装了
pygdal
,并且它的版本为1.10.1: > 之后,您将找到子目录wheelhouse,其中应包含带有扩展名`whl`的软件包
:
$ pip wheel pygdal==1.10.1.0
从wheel软件包安装
GDAL
从车轮格式化的软件包安装要快得多(与分钟相比,是一秒钟
),因为它不需要编译。
请注意,带有车轮软件包的目录可以有任何名称,我们将使用
名称wheelhouse。
首先激活virtualenv。
请确保您在wheelhouse di修复两个必需的轮包
(用于
GDAL
和pygdal
)。确保已安装
pygdal
,并且版本与numpy
的版本匹配。 :$ ls wheelhouse
numpy-1.9.1-cp27-none-linux_x86_64.whl
pygdal-1.10.1.0-cp27-none-linux_x86_64.whl
-f操舵室应指向带有whl文件的目录。
无需安装
GDAL
,它将被安装自动。评论
此答案基于此处的其他出色答案,尝试提供详细的完整说明(我被困在其中),并添加了使用轮包格式来加快重复安装到virtualenv的步骤。
– Jan Vlcinsky
2014年12月4日在9:52
侏儒为胜利! pypi:“标准GDAL python绑定的Virtualenv和setuptools友好版本” <3
–gisdude
18年5月16日在18:13
#5 楼
是的,在运行PIP之前执行以下操作似乎可以正常工作:导出CPLUS_INCLUDE_PATH = / usr / include / gdal
导出C_INCLUDE_PATH = / usr / include / gdal
#6 楼
pip安装gdal的问题在于,它仅获取绑定,而不是整个库,因此可能会很棘手。解决它的一种方法是使用pip命令下载-但不安装。然后,从配置文件中调整标题位置。然后你点安装。 meh。我遇到了同样的问题,但意识到编写一个结构脚本来重新编译gdal并生成python绑定将花费更少的时间。您甚至可以从中获得filegdb的好处。继续使用我写的文字或将其调整到您的内心满意。
#7 楼
过了一会儿,这提供了include路径,而不必退出pip安装:可以使用环境变量来设置include路径。头文件位于/ usr / include / gdal中,在运行pip之前发出
export CPLUS_INCLUDE_PATH=/usr/include/gdal
。
评论
使用此方法,即使/ usr / include / gdal中存在gdal.h,我也会收到“扩展名/gdalconst_wrap.c:2732:18:致命错误:gdal.h:没有此类文件或目录”
–anand.trex
13年5月26日,1:14
是否使用C_INCLUDE_PATH替代/另外有帮助?
– Crischan
13年6月13日在11:34
#8 楼
在左右寻找解决方案之后,即使在无权访问系统软件包的virtualenv内,也可以在Ubuntu 14.04上使用它:安装依赖项:
sudo apt-get install libgdal-dev libgdal1h libgdal1-dev
设置编译器标志:
export CFLAGS=$(gdal-config --cflags)
安装与系统库相对应的版本(在编写Ubuntu Trusty时使用的是1.10标头):
pip install GDAL==1.10.0
评论
也为我在ubuntu 16.04上工作
–卢克·W
18年5月25日在15:41
#9 楼
在其存储库中具有GDAL 2.0.2的Fedora 24上,我必须安装Python软件包,如下所示:pip install \
--global-option=build_ext \
--global-option="-I/usr/include/gdal/" \
GDAL==2.0.1
#10 楼
现在,您可以使用标准GDAL python绑定pygdal的virtualenv和setuptools友好版本。#11 楼
我在Mac上也遇到类似的问题。解决方法如下:首先,我使用virtualenv设置了虚拟Python 2.7环境。 Python发行版安装在名为“ env”的目录中。
然后我用fink安装gdal
fink selfupdate
fink update-all
fink install gdal
我还安装了gdal-开发人员,但可能不需要,因为它可能已经与gdal一起安装。
我使用以下命令检查了安装的版本:
gdal-config --version
在我的安装中,它产生了结果
1.11.1
gdal的fink安装将cpl_port.h头文件安装在/ sw / include / gdal1中。检查您自己的安装。然后我输入:
export CPLUS_INCLUDE_PATH=/sw/include/gdal1
export C_INCLUDE_PATH=/sw/include/gdal1
env/bin/pip install pygdal==1.11.1
这似乎对我有用,但我尚未测试安装。
#12 楼
尝试在Mac(OS 10.10.5)上安装python GDAL绑定时遇到类似的错误。我使用“完整”下载从http://www.kyngchaos.com/software/frameworks安装了基本的GDAL软件。我必须设置三个环境变量。导出C_INCLUDE_PATH = / Library / Frameworks / GDAL.framework / Headers
导出CPLUS_INCLUDE_PATH = / Library / Frameworks / GDAL.framework / Headers
export LIBRARY_PATH = / Library / Frameworks / GDAL.framework / Versions / Current / unix / lib
最后一步是将/Library/Frameworks/GDAL.framework/Programs添加到我的PATH中。
echo'export PATH = / Library / Frameworks / GDAL.framework / Programs:$ PATH'>>〜/ .bash_profile
之后,该pip可以安装GDAL蟒蛇。希望这会有所帮助。
#13 楼
这些gdal软件包0.10.1非常适用于Ubuntu 12.04:https://launchpad.net/~ubuntugis/+archive/ubuntu/ubuntugis-unstable/+sourcepub/4353415/+listing-archive-extra
其他ubuntu版本的gdal软件包0.10.1:
https://launchpad.net/~ubuntugis/+archive/ubuntu/ubuntugis-unstable/+packages?field.name_filter=gdal&field.status_filter= Published&field.series_filter =
评论
我也遇到了gdal 1.10.1的麻烦,只是做了以下pip安装--global-option = build_ext --global-option =“-I / usr / include / gdal” gdal == 1.10.0
–ryanjdillon
16年5月28日在20:29
#14 楼
要回答问题的virtualenv特定方面,请注意:pip3 search gdal
与python绑定的
pygdal
软件包所需的版本不同的GDAL版本。 下面是我在最新版本的Fedora(20和23)上得到的东西。
GDAL - GDAL: Geospatial Data Abstraction Library
pygdal - Virtualenv and setuptools friendly version of
standard GDAL python bindings
#15 楼
使用单个命令通过Pip安装假设已安装GDAL开发包并且头文件版本正确,则从PyPI存储库安装GDAL所需的唯一命令如下:
pip install --global-option=build_ext --global-option="-I/usr/include/gdal" gdal
这显然假定头文件的位置是
/usr/include/gdal
。安装最新的GDAL
为了安装GDAL使用上面的pip命令,头文件的版本必须与pip进行构建的版本相似。 GDAL的更新二进制参考文件位于:https://trac.osgeo.org/gdal/wiki/DownloadingGdalBinaries。
如何在OpenSUSE上安装
按照上面的链接,还有一个URL嵌入在指向OpenSUSE 42.1的最新GIS软件包集的更进一步的向下位置http://download.opensuse.org/repositories/Application:/Geo/openSUSE_Leap_42.1/Application:Geo.repo />
zypper ar -f <URL>
替换为适当的包装。如果不使用
zypper
,请访问https://trac.osgeo.org/gdal/wiki/DownloadingGdalBinaries了解更多信息#16 楼
我在Windows 10上遇到了同样的问题。经过一些实验,我找到了该解决方案。
下载并安装Python 3.6(如果未安装)
安装更改环境变量
PYTHONPATH=c:\python36
PATH=C:\python36\Scripts\;C:\python36\;%PATH%
从https://www.lfd.uci.edu/~gohlke/pythonlibs/#gdal下载* .whl以获取正确的python版本
下载并安装http://landinghub.visualstudio.com/visual-cpp-build-tools
pip install *.whl
(步骤2中的* .whl)评论
thnx,我以为python已自动安装了环境,但是随后我删除并重新创建了环境,因为您建议一切都像个魅力。
–弗洛里扬
18年11月15日在9:31
您与Visual Studio的链接不再起作用
–奥利维尔·庞斯(Olivier Pons)
19年11月13日在8:43
#17 楼
如果您使用的是Docker,我们将开源容器,从而简化了GDAL和Python 3的使用。该容器捕获了上述步骤,可让您在应用程序中快速使用GDAL。 python#18 楼
这种方法对我有用:sudo apt-get install libgdal-dev
export CPLUS_INCLUDE_PATH=/usr/include/gdal
export C_INCLUDE_PATH=/usr/include/gdal
pip3 install gdal==$(gdal-config --version)
或作为Dockerfile的一部分:
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install -y \
libgdal-dev \
python3-pip
ARG CPLUS_INCLUDE_PATH=/usr/include/gdal
ARG C_INCLUDE_PATH=/usr/include/gdal
RUN pip3 install gdal==$(gdal-config --version)
#19 楼
如果您正在使用Travis CI,并且需要Python的最新版本的GDAL,则以下示例显示了.travis.yml
文件的以下部分: language: python
env:
global:
- CPLUS_INCLUDE_PATH=/usr/include/gdal
- C_INCLUDE_PATH=/usr/include/gdal
before_install:
- sudo add-apt-repository -y ppa:ubuntugis/ppa
- sudo apt-get -qq update
- sudo apt-get -qq install libgdal-dev gdal-bin
install:
- pip install gdal==`gdal-config --version`
#20 楼
如果您正在运行基于Debian的发行版,则可以通过软件包管理器使用GDAL python库,并且可以简单地通过sudo apt install python-gdal
或sudo apt install python3-gdal
安装
#21 楼
在Docker容器中的conda的Ubuntu 16.04上(jupyter堆栈)apt-get update
apt-get install libgdal1-dev -y
gdal-config --version
export CFLAGS=$(gdal-config --cflags)
pip install GDAL==1.11.2
#22 楼
在ubuntu中,一种为python3安装最新gdal的简单解决方案:通过libgdal-dev
安装库文件,并通过python-gdal
安装python包装器。sudo apt-get install libgdal-dev
sudo apt-get install python3-gdal
对于python2:
sudo apt-get install python-gdal
#23 楼
您可能还会遇到内存使用方面的问题。运行
pip install gdal==2.2.3
gcc时,它会进行编译,从而提高了内存使用率。编译器失败,并显示类似的消息'x86_64-linux-gnu-gcc'失败,退出状态为4
要修复它,您需要添加更多ram或释放一些。
#24 楼
这就是我在python3的virtualenv上的Ubuntu 18.04(我假设16.04相同)上安装gdal 2.x(非3.x)的方法:# add the apt repo
sudo add-apt-repository -y ppa:ubuntugis/ubuntugis-unstable
sudo apt update
sudo apt upgrade -y
# install gdal==2.2.3 on system
# NOTE: these may change in the future, you can check versions with:
# apt-cache policy <package name>
sudo apt install -y libgdal20=2.2.3+dfsg-2 libgdal-dev=2.2.3+dfsg-2
sudo apt install -y gdal-bin=2.2.3+dfsg-2 python3-gdal=2.2.3+dfsg-2
# ensure that it worked
gdalinfo --version # should print 'GDAL 2.2.3, released 2017/11/20'
# start a python3 interpreter NOT inside your virtualenv
>>> from osgeo import gdal
>>> gdal.__version__ # should print '2.2.3'
# activate virtualenv
source .venv/bin/activate
# install inside virtualenv
export CPLUS_INCLUDE_PATH=/usr/include/gdal
export C_INCLUDE_PATH=/usr/include/gdal
pip3 install gdal==2.2.3
# ensure that it worked
# start a python3 interpreter INSIDE your virtualenv
>>> from osgeo import gdal
>>> gdal.__version__ # should print '2.2.3'
希望这会有所帮助!
评论
我在Windows上有类似的问题,通过虚拟环境中的pip安装gdal。 ![在此处输入图片描述](i.stack.imgur.com/EVLWP.jpg)