我了解在安装cartopy和底图之前需要满足一些依赖项。我使用pip
(例如numpy
等)整理了大部分内容。
我发现Proj.4存在一些 cartopy 问题,而GEOS存在一些底图问题。 我认为python与Java项目Proj.4的绑定已经足够了,我对C ++库GEOS有点失落(我认为GDAL对于GEOS来说已经足够了,我已经用这种方式将它链接到python世界:{{ 1}})。
我宁愿避开所有像蟒蛇,树冠等的东西。
如果可能的话,我只想在Ubuntu上使用pip install --global-option=build_ext --global-option="-I/usr/include/gdal" GDAL==`gdal-config --version
pip
,仅当apt-get
不够时)和Mac OSX(自制文件,例如pip
,仅在{{{ 1}}是不够的。)
cartopy 卡在了太旧的Proj.4版本上。 brew install <some_package>
输出显示:pip
。
我假设这个pip
安装的python绑定已经足够了,但它没有解决问题:
Proj4 version 4.8.0 is installed, but cartopy requires at least version 4.9.0.
我不明白为什么python绑定到Proj.4是不够的,即使这些绑定是使用pip
提供的最新版本。
底图以不同方式停滞不前:
$ pip show pyproj
Name: pyproj
Version: 1.9.5.1
Summary: Python interface to PROJ.4 library
Home-page: https://github.com/jswhit/pyproj
Author: Jeff Whitaker
Author-email: jeffrey.s.whitaker@noaa.gov
License: OSI Approved
Location: /usr/local/lib/python2.7/dist-packages
Requires:
某种方式使用pip
但是从底图文档中我发现库由于某种原因没有链接到pip2 install basemap
存储库,需要从源代码安装。所以我运行了Could not find a version that satisfies the requirement basemap (from versions: )
No matching distribution found for basemap
并且我相信会触发一个pip
C ++代码编译,过了一段时间它会停在底部:
pip2 install https://github.com/matplotlib/basemap/archive/v1.0.7rel.tar.gz
我不确定我做错了什么:
GEOS
绑定)In file included from src/_geoslib.c:255:0:
/usr/include/geos_c.h:151:22: note: expected ‘GEOSMessageHandler’ but argument is of type ‘void (*)(char *, char *)’
extern void GEOS_DLL initGEOS(GEOSMessageHandler notice_function,
^
x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security build/temp.linux-x86_64-2.7/src/_geoslib.o -lgeos_c -lgeos -o build/lib.linux-x86_64-2.7/_geoslib.so
/usr/bin/ld: cannot find -lgeos
collect2: error: ld returned 1 exit status
/usr/bin/ld: cannot find -lgeos
collect2: error: ld returned 1 exit status
error: Command "x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security build/temp.linux-x86_64-2.7/src/_geoslib.o -lgeos_c -lgeos -o build/lib.linux-x86_64-2.7/_geoslib.so" failed with exit status 1
----------------------------------------
Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-QVrKRr-build/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-EgAOPT-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-QVrKRr-build/
设置的GDAL链接中查找底图?如果这还不够,那么我该怎么做呢?也许GEOS包的一些pip install
可以避免在底图安装中触发GEOS编译?我对Java二进制文件,C ++二进制文件和python包绑定之间没有任何关系感到困惑。
答案 0 :(得分:1)
正如您所注意到cartopy
在版本&gt; = 4.9中需要Proj.4
lib。在Ubuntu(16.04以上),您可以通过sudo apt-get install libproj-dev
安装它。
对于较旧的Ubuntu,例如14.04,您只需从16.04(host setting)下载最新的软件包并手动安装。请注意,它取决于xenial libproj-dev。在使用
更新它们之前,请务必删除旧版本
sudo apt-get purge libproj-dev libproj9
完成后,打开并从适当架构的链接下载软件包(从您的日志中我知道这是amd64)。双击下载的文件,按librproj9
和libproj-dev
或使用
sudo dpkg -i <path_to_file>
。