安装Geopandas、Cartopy、Proj时出现错误:Cartopy安装失败的详细报错及解决求助
先把你遇到的报错贴出来,方便定位问题:
C:\Users\Justin\Documents\Python Programs>pip install cartopy
Collecting cartopy
Using cached > https://files.pythonhosted.org/packages/e5/92/fe8838fa8158931906dfc4f16c5c1436b3dd2daf83592645b179581403ad/Cartopy-0.17.0.tar.gzInstalling build dependencies ... done
Complete output from command python setup.py egg_info:
C:\Users\Justin\AppData\Local\Temp\pip-install-cetb0vj7\cartopy\setup.py:171:
UserWarning: Unable to determine GEOS version. Ensure you have 3.3.3 or later installed, or installation may fail.
'.'.join(str(v) for v in GEOS_MIN_VERSION), ))
Proj 4.9.0 must be installed.Command "python setup.py egg_info" failed with error code 1 in C:\Users\Justin\AppData\Local\Temp\pip-install-cetb0vj7\cartopy\
这个报错逻辑很明确:Cartopy在编译时需要**GEOS(3.3.3及以上)和Proj(4.9.0及以上)**这两个底层地理库,但你的系统里要么没装,要么版本不达标,要么pip没法自动识别它们的安装位置。下面给两个最实用的解决思路:
方法1:用Conda安装(最省心,优先推荐)
如果你已经装了Anaconda或者Miniconda,直接运行这条命令就行——conda会自动帮你处理所有依赖,不用手动折腾编译的问题:
conda install -c conda-forge cartopy
解释一下:conda-forge是社区维护的conda频道,里面的Cartopy包都是预编译好的,已经把GEOS、Proj这些依赖打包进去了,一步到位。
方法2:用Pip安装(需要先手动搞定依赖)
如果一定要用pip,那得先把依赖补全:
- 先装GEOS和Proj的Python绑定:
直接用pip装pygeos(对应GEOS)和pyproj(对应Proj),这两个包会帮你把底层库也装上:
注意:pyproj需要对应Proj 4.9.0+的版本,尽量装最新稳定版就行,一般都能满足要求。pip install pygeos pyproj - 再安装Cartopy:
依赖装完后,再跑pip命令,如果还是报错找不到依赖,可能需要手动指定GEOS的路径,比如:
把pip install cartopy --global-option=build_ext --global-option="-I你的GEOS安装目录/include" --global-option="-L你的GEOS安装目录/lib"你的GEOS安装目录换成实际路径,比如Windows下可能是C:\Program Files\GEOS之类的。
另外提个小建议:你现在安装的是Cartopy 0.17.0,版本比较老了,建议装最新稳定版,依赖处理会更友好,命令是:
pip install cartopy --upgrade
当然前提是先把GEOS和Proj的依赖搞定。
内容的提问来源于stack exchange,提问作者R. Baraiya

