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的使用;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM