将GDAL添加为对Python包的依赖项?


9

我正在尝试打包一个将GDAL用于PyPI的Python脚本。我首先在我的文章中加入了直接参考setup.py

install_requires=['GDAL==1.11.2'],

这样,程序包无法在我的测试虚拟环境中安装:

extensions/gdal_wrap.cpp:2855:22: fatal error: cpl_port.h: No such file or directory
 #include "cpl_port.h"
                      ^
compilation terminated.
error: Setup script exited with error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

然后,我尝试使用对的引用pygdal,因为它被标记为virtualenv友好版本:

install_requires=['pygdal'],

这样,安装完成就不会出现错误(但是会加载通常的编译警告)。但是,当我随后调用脚本时,我得到此错误:

Traceback (most recent call last):
  File "/home/desouslu/.virtualenvs/test_p3/bin/hasc2gml", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/home/desouslu/.virtualenvs/test_p3/lib/python3.4/site-packages/pkg_resources.py", line 2716, in <module>
    working_set.require(__requires__)
  File "/home/desouslu/.virtualenvs/test_p3/lib/python3.4/site-packages/pkg_resources.py", line 685, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/home/desouslu/.virtualenvs/test_p3/lib/python3.4/site-packages/pkg_resources.py", line 588, in resolve
    raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: pygdal

将GDAL设置为依赖项的正确方法是什么?

更新:依赖性似乎已正确声明,问题可能在上游,与GDAL包本身有关。有关更多详细信息,请参见StackOverflow


5
我认为关于gdal的纯Python问题在这里有效。
约翰·鲍威尔

2
有趣的是,审阅者如何确定这是一个严格的Python问题,但到目前为止却没有指出它是什么。
路易斯·德·索萨

6
这是一个python和GDAL问题,我认为是话题
Ian Turton


1
@EvilGenius我通常不赞成交叉发布,但是在这种情况下,我可以宽恕它,因为最初对此处问题的密切投票表明这是继续进行的方法。
PolyGeo

Answers:


3

在安装GDAL python绑定之前,必须在系统上安装GDAL。

apt-get install -y libgdal-dev

之后,设置变量并安装绑定

CPLUS_INCLUDE_PATH=/usr/include/gdal \
C_INCLUDE_PATH=/usr/include/gdal \
pip install GDAL

系统GDAL的版本应高于版本绑定。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.