Basemap--1--Linux下的安装
1. 相关准备
这一部分主要下载源码,以及安装依赖的其他库;
1.1 源码下载
下载版本basemap v1.1.0
;
https://github.com/matplotlib/basemap/archive/v1.1.0.tar.gz
解压:
tar -zxvf v1.1.0.tar.gz
1.2 Python虚拟环境
使用virtualenv
创建独立的python环境;
virtual -p /usr/bin/python env
-p
指定使用的python解释器;
使用Python环境:
source env/bin/activate
pip install --upgrade pip
1.3 安装依赖的库
查看依赖的库:
cd basemap-1.1.0/
安装pyproj、pyshp、Numpy、Matplotlib、Pillow
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyproj==1.9.3
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyshp==1.2.0
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple matplotlib==3.2.2
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pillow
查看:
pip list
1.4 编译GEOS
下载好的basemap
文件夹中包含了geos-3.3.3的版本,完成编译安装即可;
# 命令行当前在test/basemap-1.1.0/文件夹下
# 进入geos-3.3.3
cd geos-3.3.3
# 执行
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/geos ..
cmake ..
# 使用nproc查看核心数,我的是12, 修改j后面的数字
make -j12
# 上一步完成后,执行
sudo make install
# 完成后,即可在/usr/local/下发现geos文件夹
-DCMAKE_INSTALL_PREFIX
也可以指定到其他路径,具有root权限的可以指定到/usr/local/geos
;其他用户可以指定到自己的根目录下;
将geos添加到当前环境变量:
# 命令行定位到当前用户根目录
cd ~
# 打开~/.bashrc,也可以使用其他方式打开该文件
sudo vim ~/.bashrc
# 在最后添加以下内容
export GEOS_DIR=/usr/local/geos
export LD_LIBRARY_PATH=$GEOS_DIR/lib:$LD_LIBRARY_PATH
export PATH=$GEOS_DIR/bin:$PATH
# 保存后,执行
source ~/.bashrc
2. 安装Basemap
定位到basemap
根目录下,执行:
python setup.py install
执行完毕;
注意:并没有完全成功;
3. 测试及问题解决
测试basemap:
# 继续执行
python -c "import mpl_toolkits.basemap as basemap; print(basemap.__version__)"
报错如下:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/home/chenz/workspace/learning/basemap_learning/env/lib/python3.6/site-packages/mpl_toolkits/basemap/__init__.py", line 17, in <module>
from matplotlib.cbook import is_scalar, dedent
ImportError: cannot import name 'is_scalar'
上面的错误信息表示/env/lib/python3.6/site-packages/mpl_toolkits/basemap/__init__.py
这个文件中的第17
的from matplotlib.cbook import is_scalar, dedent
出错;
需要利用is_scalar_or_string
来替换掉is_scalar
;
原因是安装matplotlib.cbook中已经不提供is_scalar
;
修改方式:
# 进一步,定位到basemap包的路径下
cd env/lib/python3.6/site-packages/mpl_toolkits/basemap/
# 修改basemap/__init_.py文件
vim __init__.py
# 将第17行的is_scalar替换成is_scalar_or_string,即可
# 保存
继续测试basemap:
python -c "import mpl_toolkits.basemap as basemap; print(basemap.__version__)"
# 输出版本信息即表明成功
1.1.0
4. 结语
其实如果basemap这个库不弃用,安装起来还是比较容易的,但是弃用后,其他高版本的依赖库如matplotlib、pyproj,都不适用低版本的basemap了。
所以,最后还是算了吧,再写一篇文章整理一下之前用过的方法,有关basemap
的东西也不再写;
重新开一篇新的学习一下Cartopy的使用;