python setup.py build_ext --include-dirs = / usr / include / gdal / not work

时间:2013-09-27 07:54:39

标签: python gdal virtualenvwrapper

我正在尝试安装GDAL ina virstualenvwrapper,遵循几个指南和StackOverflow答案。

我在ubuntu 13.04上我被称为ligbdal1libgdal1-dev

在我的virtualenv中,我尝试过:

pip install --no-install GDAL

......之后:

python setup.py build_ext --include-dirs=/usr/include/gdal/

但我得到了这个错误:

running build_ext
building 'osgeo._gdal' extension
x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/gdal/ -I/usr/include/python2.7 -I/home/envs/test/local/lib/python2.7/site-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++ [enabled by default]
extensions/gdal_wrap.cpp: In function ‘int PyProgressProxy(double, const char*, void*)’:
extensions/gdal_wrap.cpp:3237:2: warning: the address of ‘_Py_NoneStruct’ will never be NULL [-Waddress]
extensions/gdal_wrap.cpp: In function ‘int GDALTransformerInfoShadow_TransformGeolocations(GDALTransformerInfoShadow*, GDALRasterBandShadow*, GDALRasterBandShadow*, GDALRasterBandShadow*, GDALProgressFunc, void*, char**)’:
extensions/gdal_wrap.cpp:5010:69: error: ‘GDALTransformGeolocations’ was not declared in this scope
extensions/gdal_wrap.cpp: In function ‘PyObject* _wrap_GOA2GetAuthorizationURL(PyObject*, PyObject*)’:
extensions/gdal_wrap.cpp:5553:79: error: ‘GOA2GetAuthorizationURL’ was not declared in this scope
extensions/gdal_wrap.cpp: In function ‘PyObject* _wrap_GOA2GetRefreshToken(PyObject*, PyObject*)’:
extensions/gdal_wrap.cpp:5606:94: error: ‘GOA2GetRefreshToken’ was not declared in this scope
extensions/gdal_wrap.cpp: In function ‘PyObject* _wrap_GOA2GetAccessToken(PyObject*, PyObject*)’:
extensions/gdal_wrap.cpp:5661:93: error: ‘GOA2GetAccessToken’ was not declared in this scope
extensions/gdal_wrap.cpp: In function ‘PyObject* _wrap_ReadDirRecursive(PyObject*, PyObject*)’:
extensions/gdal_wrap.cpp:6081:61: error: ‘VSIReadDirRecursive’ was not declared in this scope
extensions/gdal_wrap.cpp: In function ‘PyObject* _wrap_MajorObject_SetMetadata__SWIG_0(PyObject*, PyObject*)’:
extensions/gdal_wrap.cpp:7501:31: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
extensions/gdal_wrap.cpp: In function ‘int GDALTransformerInfoShadow_TransformGeolocations(GDALTransformerInfoShadow*, GDALRasterBandShadow*, GDALRasterBandShadow*, GDALRasterBandShadow*, GDALProgressFunc, void*, char**)’:
extensions/gdal_wrap.cpp:5011:3: warning: control reaches end of non-void function [-Wreturn-type]
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1`

有什么建议吗?我可能在哪里出错?

1 个答案:

答案 0 :(得分:7)

看来Ubuntu 13.04上的libgdal1包已经过时了。 Python cheeseshop(PyPi,这是pip使用的)提供了1.10.0包装器,而the 13.04 package list显示提供了libgdal版本1.9.0。显然,在1.10中,引入了许多新功能,这些功能是您所看到的“未声明”错误。

因此,有两个选择:

  • 手动安装libgdal 1.10。在这种情况下,您可以使用配置脚本的--with-python选项,而无需安装单独的Python绑定。你也可以了解最新最好的,我想。

  • 下载较旧的Python gdal包装器from the Python cheeseshop,并从那里继续。这可能是最简单的选择。