Basemap是matplolib的一个组件,是地图数据可视化的重要工具。
本人安装的是基于 Python3.6 版本的 Anaconda,尝试了诸多种安装basemap的方法,其中多次遭遇安装失败,也查找了网上许多tips,发现这个一个普遍的问题。因此决定将该方法分享出来,但不保证一定成功,供大家参考。
首先声明下本人的PC环境:
环境一: win10
-
操作系统:Windows10
-
基于 Python3.6 版本的 Anaconda
在 windows10 下,安装步骤如下:
(1)首先,从下面的网站下载 basemap 和 pyproj 的whl文件
https://www.lfd.uci.edu/~gohlke/pythonlibs/
对应 python3.6 版,windows 系统下的文件如下:
-
basemap-1.2.0-cp36-cp36m-win_amd64.whl
-
pyproj-1.9.5.1-cp36-cp36m-win_amd64.whl
(2)安装 pyproj 的 whl 文件, 如下:
-
pip install 路径+文件名
![a6ac4f3a78417e5a6413b6eacd1e19cb581ef07e](https://yqfile.alicdn.com/a6ac4f3a78417e5a6413b6eacd1e19cb581ef07e.png?x-oss-process=image/resize,w_1400/format,webp)
图1
(3)安装basemap 的 whl 文件,如下:
![ceaec6a4696036af6047a8a7118ad081871acb9d](https://yqfile.alicdn.com/ceaec6a4696036af6047a8a7118ad081871acb9d.png?x-oss-process=image/resize,w_1400/format,webp)
图2
(4)测试下 basemap 是否安装成功
-
from mpl_toolkits.basemap import Basemap
![ea9b65bbe97afce60807e3efb9c2828a90e93030](https://yqfile.alicdn.com/ea9b65bbe97afce60807e3efb9c2828a90e93030.png?x-oss-process=image/resize,w_1400/format,webp)
图3
如上图所示,显示 Matplotlib 缺少文件, Basemap 不能正确运行。
(5)更新 Matplotlib 库
-
pip install matplotlib --upgrade
![3cea6de32748b9f0f95e6aefb9471f1276eb78d5](https://yqfile.alicdn.com/3cea6de32748b9f0f95e6aefb9471f1276eb78d5.png?x-oss-process=image/resize,w_1400/format,webp)
图4
(6)再次测试 Basemap 是否安装成功
![ca3e0f8d4e1bd9b02da32b24e88a4bde50eeb464](https://yqfile.alicdn.com/ca3e0f8d4e1bd9b02da32b24e88a4bde50eeb464.png?x-oss-process=image/resize,w_1400/format,webp)
图5
可以看到,现在 Basemap 是可以正确运行的。
接下来,在 Jupyter Notebook 中运行代码试试。
-
import matplotlib as mpl
-
import matplotlib.pyplot as plt
-
-
%matplotlib inline
-
plt.style.use('ggplot')
-
-
from mpl_toolkits.basemap import Basemap
-
-
plt.figure(figsize=(8,8))
-
-
m = Basemap(projection='ortho', resolution=None,
-
lat_0=50,lon_0=-100)
-
m.bluemarble(scale=0.5)
运行结果如下:
![d63ecadafca33502c6e2ccaefe1f16c25f0ab48f](https://yqfile.alicdn.com/d63ecadafca33502c6e2ccaefe1f16c25f0ab48f.png?x-oss-process=image/resize,w_1400/format,webp)
图6
以上运行结果说明,Basemap 已经成功安装。
环境二: win7
-
操作系统:Windows7
-
基于 Python3.6 版本的 Anaconda
本以为 Basemap 的安装就告一段落了,但本人还有一个 windows 7 系统 的PC。
想着 win7 跟 win10 应该是一样的安装, 但按上述的步骤安装后,出现以下错误:
运行代码:
-
from mpl_toolkits.basemap import Basemap
出现以下问题:
-
Traceback (most recent call last)
-
<ipython-input-1-d9467465a3b6> in <module>()
-
----> 1 from mpl_toolkits.basemap import Basemap
-
-
/opt/conda/lib/python3.6/site-packages/mpl_toolkits/basemap/__init__.py in <module>()
-
144
-
145 # create dictionary that maps epsg codes to Basemap kwargs.
-
--> 146 pyproj_datadir = os.environ['PROJ_LIB']
-
147 epsgf = open(os.path.join(pyproj_datadir,'epsg'))
-
148 epsg_dict={}
-
-
/opt/conda/lib/python3.6/os.py in __getitem__(self, key)
-
667 except KeyError:
-
668 # raise KeyError with the original key value
-
--> 669 raise KeyError(key) from None
-
670 return self.decodevalue(value)
-
671
-
-
KeyError: 'PROJ_LIB'
这个 “PROJ_LIB” 问题,我尝试了很多遍,也查阅了很多网站提供的解决方案,发现大部分都不是太符合,最后在某个英文的解决方案里有提到一种 较为间接的解决方案, 经过尝试后,发现是可以安装 Basemap, 并成功运行的。
在此,给大家分享下。
其中曲折的试错过程就不描述了,直接介绍成功的过程(但不保证在你的电脑上是没有问题的)。
这种方法的核心是 在 Anaconda 下创建一个虚拟环境,然后在 虚拟环境中安装和运行 Basemap。
(1)在 Anaconda 下创建一个虚拟环境
打开 Anaconda Prompt, 在 Anaconda 的默认跟目录下创建一个虚拟环境,名称为 “py36”。
-
conda create -n py36 python=3.6
关于 Anaconda 下虚拟环境的安装,请参考以下内容:http://liyangbit.com/anaconda/anaconda-install-env-to-custom-path/
安装好后,可以用以下命令来查看虚拟环境的列表:
-
conda info --envs
然后激活虚拟环境
-
activate py36
(2)在 虚拟环境 “py36” 下安装 matplotlib
-
pip install matplotlib
(3)在 虚拟环境 “py36” 下安装 pyproj 的 whl 文件, 如下:
-
pip install 路径+文件名
(4)在 虚拟环境 “py36” 下安装basemap 的 whl 文件,如下:
-
pip install 路径+文件名
(5)在 虚拟环境 “py36” 下测试下 basemap 是否安装成功
-
from mpl_toolkits.basemap import Basemap
![5b69c9f856fccc5b35770b2840677746aa6ca5cc](https://yqfile.alicdn.com/5b69c9f856fccc5b35770b2840677746aa6ca5cc.png?x-oss-process=image/resize,w_1400/format,webp)
图7
可以看到,在虚拟环境下,Basemap 是可以正确运行的。
(6)测试下在 Jupyter Notebook 中 Basemap 是否可以运行
程序文件目录下输入
-
jupyter notebook
发现在默认情况下没有找到之前创建的 虚拟环境。
在 Jupyter Notebook 中, 创建的虚拟环境需要安装一个插件才能正确的显示出来。
打开 Anaconda Prompt,插件的安装命令如下:
-
conda install nb_conda
再重新开启Jupyter Notebook,就可以找到安装好的虚拟环境,如下:
![ac98396070e61b0dde4b5eedc72146cf15105c19](https://yqfile.alicdn.com/ac98396070e61b0dde4b5eedc72146cf15105c19.png?x-oss-process=image/resize,w_1400/format,webp)
图8
在虚拟环境下运行下面的代码:
-
import matplotlib as mpl
-
import matplotlib.pyplot as plt
-
-
%matplotlib inline
-
plt.style.use('ggplot')
-
-
from mpl_toolkits.basemap import Basemap
-
-
plt.figure(figsize=(8,8))
-
-
m = Basemap(projection='ortho', resolution=None,
-
lat_0=50,lon_0=-100)
-
m.bluemarble(scale=0.5)
运行结果如下:
![aa1a6d712eb799945aee7a81802051ff6a7f3fe3](https://yqfile.alicdn.com/aa1a6d712eb799945aee7a81802051ff6a7f3fe3.png?x-oss-process=image/resize,w_1400/format,webp)
图6
以上运行结果说明,Basemap 已经成功安装。
至此,在 win10 和 win7 下都可以安装和运行 Basemap。
如果你对 Basemap 感兴趣,也可以进行安装和使用。
如有问题,不妨一起交流下。
原文发布时间为: 2018-12-04
本文作者:Lemonbit
本文来自云栖社区合作伙伴“ Python数据之道”,了解相关信息可以关注“ Python数据之道”。