前言
高版本Mac、python库下Basemap装的真是折磨人,好不容易通过修改源码成功 import 了,结果运行案例代码中途报错。。最后转用cartopy
这里强烈建议高版本Mac、python的用户不要使用basemap,basemap官方都说其已经过时了,要求用户转向cartopy
本人环境mac10.15.x,python3.7+
卸载cartopy相关
可能是太过笨重,网速感人,所以本人一直不太喜欢Anaconda,也从来没装过,虽然cartopy官方说了使用Anaconda安装是最方便的,但本人作为venv一派,决定在venv下使用pip安装cartopy
两行命令进入以当前目录为根目录的venv虚拟环境(非必须)
$ python3 -m venv .
$ source ./bin/activate
当然,本文中是否使用venv虚拟环境安装cartopy并无关紧要,你在普通环境下使用pip3安装都是一样的
1. 首先卸载geos、proj,你用pip装的就
pip uninstall geos proj
用brew装的就
brew uninstall geos proj
如果安装了特定版本的,比如用brew安装了proj的5.2.0版本,就brew uninstall proj@5.2.0
2. 卸载shapely和cartopy同上方法(同必卸)
重装cartopy相关
1. 使用brew过程中可能会出现 “Permission denied @ …” 问题,采用下面提高brew权限(建议安装前都来一发下面命令)
sudo chown -R $(whoami) $(brew --prefix)/*
2. 安装pkg-config(关键步骤)
brew install pkg-config
并临时设置pkg-config的环境变量
export PKG_CONFIG_PATH=
"/usr/local/lib/pkgconfig"
如果没有这步,会出现报错 lib/cartopy/_crs.c:637:10: fatal error: 'proj_api.h' file not found、
error: command 'xcrun' failed with exit status 1等:
crs.c -o build/temp.macosx-10.14-x86_64-3.7/lib/cartopy/_crs.o
lib/cartopy/_crs.c:637:10: fatal error: 'proj_api.h' file not found
#include "proj_api.h"
^~~~~~~~~~~~
1 error generated.
error: command 'xcrun' failed with exit status 1
----------------------------------------
2. 安装proj geos
brew install proj geos
安装后我的geos版本3.8.1,proj版本7.1.0(别指望类似proj 5.x的低版本,会报错,帮你试了)
3. 更新相关依赖
pip install --upgrade cython numpy pyshp six
4. 安装shapely
pip install shapely --no-binary shapely
5. 安装cartopy
pip install cartopy
然后就成功了!
进入python,运行官方代码案例,成功绘制出地图!(venv党的小胜利✌️)