离线安装Basemap模块问题

2019-06-04 06:01:14广东张鹏刘之良秦超
网络安全和信息化 2019年5期
关键词:命令行离线文件夹

■ 广东 张鹏 刘之良 秦超

编者按: 本文主要讲述了在离线环境下的Linux终端上为Python语言安装Basemap库的过程,通过对遇到的问题进行分析和处理,希望对大家的使用有一些参考价值。

笔者在离线环境下Linux中为Python语言安装Basemap库,开始安装之前,通过网上了解一些基本情况。由于Basemap库需要大量的依赖,如Matplotlib、Numpy、PROJ4、GEOS等。考虑到由于需要安装Basemap的计算机终端位于离线环境,无法通过pip在线安装,因此选择Anaconda解决方案。

Anaconda是一个开源的Python发行版本,其包含了Conda、Python等180多个科学包及其依赖。可以极大的降低数据可视化环境安装的复杂程度。但是,Anaconda中不包含Basemap库,需要另行安装。

图1 命令行窗口

安装过程

由于需要离线安装,第一步就是通过互联下载相关软件。下载包括Anaconda、Basemap、Pyproj等安装文件。推荐到清华大学开源软件镜像站点下载,会比官网快很多,且有很多其他的包供选择下载,上面提到的软件基本都能找到。

第二步就是安装Anaconda。运行安装文件Anaconda3-5.3.1-Linuxx86_64.sh,这里选择的基于python3.7的发行版本,毕竟python3才是未来的趋势。安装完成后,需要在”/etc/profile”添加环境变量,将安装路径下anaconda3/bin目录添加到系统环境变量中。运行“python”,如图1所示,说明Anaconda安装正确。

第三步,安装Basemap库依赖。在安装Basemap库之前需要安装 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交互接口中输入“from mpl_toolkits.basemap import Basemap”,发现报错如图2所示,提示没有找到mpl_toolkits.basemap 模块。

图2 加载basemap报错提示

图3 pip show 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这个模块是存在的,经过仔细检查sitepackages目录发现,在该目录下竟然还存在一个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模块,引起调用失败。相对成熟的商业项目,开源项目更加灵活,但是使用者需要更加仔细的分析,对底层知识有更加详细的了解才能更好的发挥开源项目的优势。

猜你喜欢
命令行离线文件夹
磁力文件夹
异步电机离线参数辨识方法
防爆电机(2021年4期)2021-07-28 07:42:46
呼吸阀离线检验工艺与评定探讨
浅谈ATC离线基础数据的准备
Windows 10新版CMD更新
离线富集-HPLC法同时测定氨咖黄敏胶囊中5种合成色素
中成药(2018年2期)2018-05-09 07:20:09
调动右键 解决文件夹管理三大难题
Linux系统下GRIB2格式GFS资料转为GRIB1格式的方法详解
TC一键直达常用文件夹
电脑迷(2015年1期)2015-04-29 21:24:13
低碳生活,从命令行开始