实际开发中经常会遇到这样的问题,开发某一应用使用的分别是A包的1.0.5版本,B包的2.0.6版本,C包的0.8版本,Python使用的是2.7版本;而另一应用则需要使用Python 3.6版本,A包的1.1.2版本,B包的2.2.0版本,C包的0.8版本,如何管理这些不同的环境是开发人员的一大难题。对数据分析人员而言,通常需要同时使用SciPy、NumPy、Matplotlib、Pandas、DASK、Scikit-learn等包,而不同包之间还存在兼容问题,如何快速完成这些包的安装和升级也是一个问题。
开源Anaconda正是为解决这些问题应运而生,它是在Linux、Windows和Mac OS X上搭建基于Python语言和R语言数据科学、机器学习环境的最简单方法。Anaconda在全球有超过1100万用户,利用它可以实现以下功能。
· 快速下载1500多个Python/R数据科学包。
· 使用Conda管理库、依赖项和环境。
· 使用Scikit-learn、TensorFlow和Theano开发和训练机器学习和深度学习模型。
· 使用DASK、NumPy、Pandas和Numba分析具有可伸缩性的数据。
· 使用Matplotlib、Bokeh、Datashader和Holoviews可视化结果。
一、安装Anaconda
首先访问网站
https://www.anaconda.com/distribution/,根据对应的操作系统和期望的Python版本,单击Download按钮完成Anaconda应用的下载,如图1所示。
(1)在Windows系统中完成Anaconda程序的下载后,只需要直接运行
Anaconda3-2019.03-Windows-x86_64.exe,单击Next按钮,如图2所示。
图1 Anaconda下载
图2 安装Anaconda
(2)选择“I Agree”接受用户许可协议,进入如图2.13所示的界面,选择安装类型是当前用户使用还是系统全部用户都可以使用。第二种情况需要具有Windows系统管理员权限。
(3)选择程序的安装目录,如图3所示。
(4)选择是否把Anaconda注册为系统默认的Python环境,除非想在系统里面安装多个不同版本的Anaconda或Python,那么通常建议使用系统默认推荐,如图4所示。
图3 选择安装类型
图4 选择安装目录
图5 注册Anaconda
(5)单击Install按钮后,Anaconda将开始安装,当完成安装后,程序将提示是否安装PyCharm,如图6所示,这里直接单击Next按钮,进入下一步。
图6 PyCharm安装
(6)直接单击Finish按钮完成Anaconda安装,如图7所示。
图7 完成Anaconda安装
成功安装Anaconda后,可以在Windows的开始菜单中找到Anaconda的启动菜单,如图8所示。
图8 Anaconda启动菜单
二、利用Conda管理Python环境
Conda是Anaconda提供的包及其依赖项和环境的管理工具,利用它可以:
· 快速安装、运行和升级包及其依赖项;
· 在计算机中便捷地创建、保存、加载和切换环境。
有了Anaconda就可以利用它提供的Conda命令来管理环境,从而解决前面提到的Python版本问题和各种数据分析中用到的包管理问题。要使用Conda,首先需要在系统菜单中单击“Anaconda Prompt”进入命令行模式,如图9所示(对Linux/Mac OS,Conda命令可以直接在命令行运行)。需要注意的是,这里是以管理员身份运行的“Anaconda Prompt”。
图9 Anaconda Prompt
进入Anaconda命令行模式后的第一件事就是更新Anaconda,在命令行输入:
conda update conda
并在提示是否更新的时候输入y(Yes)让更新继续。
1.创建环境
完成了Conda更新,接下来就可以创建一个新的环境了,默认打开Anaconda命令行的时候进入的是系统的base环境(图9),通常开发中会创建不同的环境以满足不同应用对各种Python版本以及第三方包的要求。要创建一个新的环境,可以在命令行输入:
conda create-n env_name package_names
上面的命令中,env_name是设置环境的名称(-n指该命令后面的env_name是要创建环境的名称),package_names是要安装在所创建环境中的包名称,同时还可以指定版本。例如,要创建名为py37的环境,并在其中安装最新的Python版本,可以在终端中输入:
conda create-n py37 python=3
此时Conda将创建一个全新的环境,环境名为py37,使用的Python版本为3,如图10所示。
同样地,如果想创建一个环境,使用Python 3.6,同时安装Pandas 0.24.0版本,以及NumPy包,可以通过如下命令完成。
conda create-n py36 python=3.6 numpy pandas=0.24.0
如果想在创建环境同时安装其他的包,只需要在创建环境时添加对应的包就可以了。
图10 创建py37环境
2.切换环境
在Windows上,可以使用activate my_env进入对应的环境;而在OS X/Linux上则使用source activate my_env进入环境。进入环境后,用户会在终端提示符中看到环境名称。图11所示为进入前面创建的py37环境。
图11 进入py37环境
进入环境后可以通过命令conda list来列出当前环境已经安装的包,以及对应版本,如图12所示。
可以用下面的命令来检查当前环境的Python版本。
python -version
图12 列出当前环境中的包
这里要特别强调的是不同的环境类似于在系统里面建立了隔离沙箱,相互之间不影响,这样开发人员就可以通过切换不同环境满足不同的开发需求。
3.离开环境
要离开当前环境,在命令行输入:
conda deactivate
4.环境共享
环境共享是非常实用的功能,它能保证让整个项目的协作人员都使用相同的软件包,并确保这些包的版本正确。例如,当前数据分析员李四正在进行网络促销数据分析,他需要提交应用给另一部门的张三来部署项目,但是张三并不知道数据分析时使用的是哪个Python版本,以及使用了哪些包和包的版本。这时应该怎么办呢?李四就可以在当前的环境终端输入:
conda env export > environment.yaml
将当前的环境的配置(包括Python版本和所有包的名称)保存到一个YAML文件中。命令的第一部分conda env export用于输出环境中所有包的名称(包括Python版本),第二部分是对应的文件名。那么张三拿到了导出的环境文件,在其他电脑环境中如何使用呢?首先在Conda中进入当前的环境,如:
activate py37
然后再使用以下命令更新环境。
conda env update -f=/path/to/environment.yml
其中,-f表示要使用的环境文件在本地的路径,读者将/path/to/environment.yml替换成本地的实际路径即可。
5.列出环境
有时用户可能会忘记自己创建的环境名称,这时就可以用conda env list命令来列出本地创建的所有环境。用户会看到本地所有环境的列表,而当前所在环境的旁边会有一个星号,Anaconda命令行默认的环境(即还没有选定环境时使用的环境)名为base,如图13所示。
图13 列出环境
6.删除环境
如果不再使用某个环境,可以使用以下命令删除指定的环境,这里的env_name为想删除的本地环境名。
conda env remove-n env_name
7.查看环境信息
如果想了解当前环境,可以使用以下命令。
conda info
此命令会列出该环境的所有信息,如图14所示。
图14 查看环境信息
三、利用Conda管理Python包
创建好对应的工作环境后,通常还需要对环境中的包进行管理。利用Conda命令可以实现各种包的安装、升级以及卸载。
1.安装包
例如,想安装requests这个包,进入创建好的py37环境后,在命令行模式下输入:
conda search requests
将在Anaconda提供的库(repository)里面搜索这个包是否存在,以及有哪些版本。之后可以利用如下命令来完成该包的安装。
conda install requests
在安装时用户也可以指定对应的requests版本。此外,如果在Anaconda提供的库里面找不到想安装的包,或者想安装更新的版本,那么也可以通过社区维护的conda-forge来安装。例如,如果想使用conda-forge来安装Pandas,可以使用如下命令。
conda install-c conda-forge pandas
如果在上面的库都无法找到想安装的包,也可以用标准的Python包管理命令pip来完成在当前环境中第三方包的安装。例如,用来获取国内财经以及股票数据的tushare包,就可以通过在当前环境下使用如下命令来完成安装。
pip install tushare
2.包的卸载与升级
包的卸载可以通过如下命令完成。
conda uninstall packages_name
这里的packages_name就是当前环境中要删除的包。如果想在当前环境中删除另一个环境中的包,可以通过如下命令完成。
conda uninstall my_env packages_name
这里的my_env就是对应的环境名。同时,对于任何Conda命令都可以通过获取帮助的方式来详细了解命令的使用方法,如:
conda uninstall -help
conda install-help
如果想对已经安装的包进行升级,则可以输入:
conda update my_env packages_name
如果是对当前环境中包升级,则可以略去环境名。如果想对所有包升级,则可以输入:
conda update-all
3.为Anaconda添加新的库
有时在国内使用Anaconda提供的库来安装包会比较缓慢,这时可以考虑添加国内镜像来解决这个问题。例如,通过如下命令可以使用中国科学技术大学的镜像。
conda config--add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urlsyes
上面的第二个命令是显示当前有哪些镜像地址。可以通过如下命令来将刚才添加的镜像地址移除,用conda config-show来确认该地址已经移除。
conda config --remove channels 'https://mirrors.ustc.edu.cn/anaconda/pkgs/free/'
conda config-show
2.3.4安装数据分析所需的包
前面已经创建好了一个使用Python 3.7的环境py37,在Anaconda命令行模式使用activate py37进入该环境,接下来需要在该环境中安装数据分析所需的软件包。在命令行模式输入:
conda install scipynumpy statsmodels pandas scikit-learn matplotlib seaborn ipython jupyter
即可完成所有数据分析中用到的包的安装。
python --version
ipython--version
jupyter--version
jupyternotebook --version
分别输入上述命令,可以获得环境中用到的包的版本信息,如图15所示。除此之外,也可以利用conda list方式获得版本信息,如conda list ipython可以查询IPython包的信息。
图15 检查软件包版本
对于Pandas、SciPy等包的版本信息,可以首先在命令行输入ipython,进入IPython的交互模式后查询,具体代码如下。
输入上述代码,将看到如图16所示的输出。
图16 Pandas等的版本信息