MacOS下Python安装BaseMap包

官方安装教程在这里
但是官方教程有坑,又介于刚刚接触macos这类unix系统不久,很多相关知识不充足,所以踩了不少坑。因此这篇笔记也会多说一点unix的事情。

BaseMap简介

matplotlib是Python常用的数据绘制包。它基于numpy的数组运算功。
matplotlib绘图功能强大,可以轻易的画出各种统计图形,比如散点图,条行图,饼图等。matplotlib常与numpy和scipy相配合,用于许多研究领域。他们是免费工具,但其功能足可以与科研界的大佬Matlab竞争。
Basemap是Matplotlib的一个子包负责地图绘制。在数据可视化过程中,我们常需要将数据在地图上画出来。比如说我们在地图上画出城市人口,飞机航线,军事基地,矿藏分布等等。这样的地理绘图有助于读者理解空间相关的信息。
这里是使用简介和实例。

BaseMap下载和安装

我已经完美安装成功了,用pip show basemap可以查看到这个包的相关信息:

⋊> ~ pip show basemap                                                                                                                                               14:46:06
Name: basemap
Version: 1.2.0
Summary: Plot data on map projections with matplotlib
Home-page: https://matplotlib.org/basemap/
Author: Jeff Whitaker
Author-email: jeffrey.s.whitaker@noaa.gov
License: OSI Approved
Location: /Users/shaozezhi/.pyenv/versions/3.6.7/lib/python3.6/site-packages
Requires: matplotlib, numpy, pyproj, pyshp, six
Required-by:
  • 这是最新版1.2.0。相对于前一版1.1.0没有任何新特性。只是修复了找不到is_scale问题。这个后面会单独说道,是坑之一。
  • 依赖环境:matplotlib, numpy, pyproj, pyshp, six。可见其环境要求很严格。
    OK,开始从头安装:

首先安装依赖环境:

  • pip install matplotlib
  • pip install numpy
  • brew install geos
  • brew install proj
    依次执行上面的命令。注意geos包使用brew,包会被安装在/usr/local/Cellar/geos/x.x.x下面。x是版本号,我的是3.7.1。也可以使用pip安装,那么包将会被安装到python编译器的相关目录相面,假如使用了pyenv,将会放在pyenv指定的编译器下面。**后面需要为goes包指定环境变量,为了方便,直接用brew安装就行了。

配置环境变量

open ~/.bash_profile

文件中添加一行:export GEOS_DIR=/usr/local/Cellar/geos/x.x.x/。就是之前的安装位置。可以使用

brew info geos

来查看包的位置,和pip show是一个道理,就能看到安装位置了。
然后更新环境变量

source ~/.bash_profile

下载和安装

这里是github上的下载地址,此项目开源
一定下载最新版的。(我下载的1.2.0)
下载完成,解压,进入根目录。

cd ~/Downloads
tar zxvf basemap-1.2.0.tar.gz
cd basemap-1.2.0

然后安装:

sudo python setup.py install

测试使用

进入python,输入import mpl_toolkits.basemap as bm

⋊> ~ python 
Python 3.6.7 (default, Dec 16 2018, 11:18:40)
[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.10.44.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import mpl_toolkits.basemap as bm
>>> exit()```

没有报错就成功了。下面就不用看了。
假如报错:

from matplotlib.cbook import is_scalar, dedent
ImportError: cannot import name 'is_scalar'

请查看basemap的版本:pip show basemap,version必须在1.2.0及其以上。
is_scalar是matplotlib中的代码,但是在mpl 3.x之后便移除了这些代码。basemapv1.2.0一下的版本中一处调用到了这个代码,所以导致失败。1.2.0版本修复了这个问题。假如版本号不对,或者发现提示找不到mpl_toolkits.basemap包,请使用以下命令升级basemap:

sudo -H  pip install -U git+https://github.com/matplotlib/basemap.git

文件很大(120MB+),下载速度一般,所以会下载较长时间,一直显示正在clone也不要着急。

还有一些小小的说明

官方教程是这样安装geos库的

cd geos-3.3.3
export GEOS_DIR=<where you want the libs and headers to go>
# A reasonable choice on a Unix-like system is /usr/local, or
# if you don't have permission to write there, your home directory.
./configure --prefix=$GEOS_DIR
make; make install

不用试了,不行的,环境变量配不好。
这里是is_scale找不到的issue
其他的就是一定要注意pip 和 brew ,以及在pyenv下使用pip,这三种情况安装库包的区别。使用pip show或者brew info查看包的信息。
其实按道理用pip安装geos和用官方教程安装geos是都可以的,但是我直接用的brew,也就懒得再去用pip安装一遍试一试行不行了,换一下路径应该没问题。
而官方那个...我弄得一团糟,没成功,始终没找到goes库的位置,环境变量配不成。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容