www.365master  2019.05
141
故障诊断与处理
C o m m e n t
Trouble Shooting 笔者在离线环境下Linux 中为Python 语言安装Basemap 库,开始安装之
前,通过网上了解一些基本情况。由于Basemap 库需要大量的依赖,如Matplotlib、Numpy、PROJ4、GEOS 等。考虑到由于需要安装Basemap 的计算机终端位于离线环境,无法通过pip 在线安装,因此选择Anaconda 解决方案。
Anaconda 是一个开源的Python 发行版本,其包含了Conda、Python 等180多个科学包及其依赖。可以极大的降低数据可视化环境安装的复杂程度。但是,Anaconda 中不包含Basemap 库,需要另行安装。
安装过程
由于需要离线安装,第一步就是通过互联下载相关软件。下载包括Anaconda、Basemap、Pyproj 等安装文
件。推荐到清华大学开源软
库之前需要安装Goes、Pyshp 和P y p r o j 三个依赖。如果没有安装这些
依赖项目,在执行“python setup install”时,会提示因为缺少依赖而中断。这三个依赖项目中,goes 可以在Basemap 中到源码,可以通过编译安装。Pyshp 和Pyproj 是Python 包,可以通过在解压目录中执行“python setup.py install”来安装。安装完成后可以通过“pip list”命令查看相应库安装情况。第四步,安装Basemap 库。进入Basemap 解压目录,执行“python setup.py install”,完成安装。
接下来就是测试一下安装是否正常,在Python 交
离线安装Basemap 模块问题
linux离线安装nginx详细教程■ 广东 张鹏 刘之良 秦超
编者按: 本文主要讲述了在离线环境下的Linux 终端上为Python 语言安装Basemap 库的过程,通过对遇到的问题进行分析和处理,希望对大家的使用有一些参考价值。
件镜像站点下载,会比快很多,且有很多其他的包供选择下载,上面提到的软件基本都能到。
第二步就是安装Anaconda。运行安装文件Anaconda3-5.3.1-Linux- x86_64.sh,这里选择的基于python3.7的发行版本,毕竟python3才是未来的趋势。安装完成后,需要在”/etc/profile”添加环境变量,
将安装路径下anaconda3/bin 目录添加到系统环境变量中。运行“python”,如图1所示,说明Anaconda 安装正确。
第三步,安装Basemap
库依赖。在安装Basemap
图1 命令行窗口
1422019.05  www.365master
Trouble Shooting 责任编辑:赵志远  投稿信箱:netadmin@365master
故障诊断与处理
图3 pip show basemap
信息
互接口中输入“from mpl_toolkits.basemap import Basemap”,发现报错如图2所示,提示没有到mpl_toolkits.basemap 模块。
问题分析及处理
安装完成后测试加载Basemap 库提示不到对应模块,难道是安装失败了?
通过在命令行中输入“pip list | grep basemap ”命令发现,该模块已经被正常安装。使用“pip info basemap”也可以查到相关信息,如图3所示。
这里看到Basemap 被安装到了Anaconda 的“lib/python3.7/sit-packages”目录中。egg 文件类似于java 程序的jar 包,实际就是一组文件集合的压缩包。打开egg 文件发现里面存在mpl_toolkits/basemap 的目录结构。根据以上信息基本可以确认basemap 安装正常,那么是什么原因导致加载basemap 包失败呢?
这里又做了一个测试,在Python 命令行中输入“import mpl_toolkits”,发现能够正常执行。这说明mpl_toolkits 这个模块是存
在的,经过仔细检查site-packages 目录发现,在该目录下竟然还存在一个mpl_toolkits 的文件夹,里面有若干目录。尝试加载其中一个模块“import mpl_toolkits.mplot3d”,发现该模块可以正常加载。同时也发现该目录中没有Basemap 模块。难道是Python 的查顺序导致Basemap 的egg 包没有被检索到导致加载Basemap 库失败么?尝试将egg 包中mpl_toolkits 中的Basemap 目录直接复制
到sit-packages/mpl_
toolkits 目录中,再次测试发现Basemap 库可以正常加载了。使用样例程序测试,可以正常绘图。至此,整个安装过程结束。
结语
Python 语言在联网安装时通过pip 或是conda 等在线安装工具可以自动安装依赖和软件,极大的降低了环境安装的复杂程度。在离线安装环境下,anaconda 会打包很多库和依赖项。本例就是由于anaconda 预安装了一些模块,致使site-packages 中存在mpl_toolkits 文件夹。调用basemap 模块时,由于mpl_toolkits 文件夹会被优先检索,导致查不到egg 包中的basemap 模块,引起调用失败。相对成熟的商业项目,开源项目更加灵活,但是使用者需要更加仔细的分析,对底层知识有更加详细的了解才能更好的发挥开源项目的优势。
图2 加载basemap
报错提示

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。