2012-07-04 68 views
16

我試圖在pip pip install gdal裏面安裝一個虛擬環境(Ubuntu)中的gdal。因爲它無法找到cpl_port.h當通過pip安裝時,Python GDAL包缺失頭文件

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查找頭文件?

回答

5

使用PIP

pip install --no-install GDAL 

然後cd到ENV /建造/ GDAL

python setup.py build_ext --include-dirs=/usr/include/gdal 
pip install --no-download GDAL 

(來源:http://ubuntuforums.org/showthread.php?t=1769445

使用附加件

[gdal-bindings] 
recipe = zc.recipe.egg:custom 
egg = GDAL==1.9.1 
include-dirs = /usr/include/gdal 
library-dirs = /usr/lib 
+0

這也可能是'包括 - 迪爾斯= /庫/框架/ GDAL.framework /版本/ 2.1 /頭/'在OSX如果您安裝了瓦特/ Kyngchaos ... – Owen

17

the other thread所示,在運行pip之前導出一些shell變量的工作完美無瑕。 *_INCLUDE_PATH的路徑可以在gdal-config --cflags找到。

# GDAL library must have been installed 
sudo apt-get install libgdal-dev 

# Set up pip and/or virtualenv stuff 
... 

# Now install Python binding for GDAL 
export CPLUS_INCLUDE_PATH=/usr/include/gdal 
export C_INCLUDE_PATH=/usr/include/gdal 
pip install GDAL 
+0

這個固定它對我來說,也可以看到@Neil Smith的回答:在Ubuntu 14.04中,你需要匹配安裝在系統上的libgdal的版本。 – Gabriel

+0

仍然認爲這是錯誤。 gdal_wrap.cpp應該#include「gdal/cpl_port.h」而不是「cpl_port.h」 –

+0

絕對不適合我。仍然相同的cpl_port.h錯誤。使用OpenSUSE – DanCat

7

Tomyun的回答爲我工作,與你必須確保GDAL-dev的安裝的版本通過apt-get匹配了pip正在安裝的版本的條件。

的Ubuntu 14.04,該命令是:

# GDAL library must have been installed 
sudo apt-get install libgdal-dev 

# Set up pip and/or virtualenv stuff 
... 

# Now install Python binding for GDAL 
export CPLUS_INCLUDE_PATH=/usr/include/gdal 
export C_INCLUDE_PATH=/usr/include/gdal 
pip3 install GDAL=1.10.0 
+3

我也使用Ubuntu 14.04。對我來說,它沒有奏效(我沒有virtualenv)。只有當我將最後一行更改爲這一行時: sudo pip3 install --global-option = build_ext --global-option =「 - I/usr/include/gdal」GDAL == 1.10.0 –

-3

儘量做到: 沖泡安裝@中

後再試。

+0

這個答案是如果你解釋OP在他的案例中出了什麼問題,以及你的代碼片段如何解決問題,以及釀造工作的先決條件,那將會更有幫助。 –

+0

「brew」僅限Mac,而OP使用Ubuntu – Alessiox

0

我在測試在虛擬環境中安裝依賴於GDAL的軟件包時也遇到了此錯誤。在這種情況下,解決方法是在setup.pyinstall_requires參數中將相關性從GDAL更改爲pygdal。像這樣:

install_requires=['pygdal'],