zoukankan      html  css  js  c++  java
  • 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这个文件中的第17from 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的使用;

  • 相关阅读:
    全代码实现ios-4
    集训第一次周赛题目及题解
    网站登录时密码忘记,通过向邮箱发送验证链接实现重置密码的实现方法
    hdu 1861-游船出租
    c#获取或修改配置文件
    今天做php经典实例,发现,我是对的,面试官给我说错了
    HDU 4637 Rain on your Fat brother 线段与半圆和线段交 简单题
    Qt之图标切分与合并
    标准容器的共性及举例
    如何提高数据库update更新的速度
  • 原文地址:https://www.cnblogs.com/chenzhen0530/p/13885253.html
Copyright © 2011-2022 走看看