引言
问题
:假如你手上有两个项目,分别为项目A和项目B,项目A要求使用Python2的运行环境,而项目B要求使用Python3运行环境,那我们应该怎么办呢?
-
方法一:同时下载两个版本的Python,即分别下载Python2和Python3解释器, 配置系统环境变量。
-
方法二:使用Anaconda中的conda可以帮助我们为不同的项目建立不同的虚拟运行环境,即项目A 放在环境A中,项目B放在环境B中,二者互不干扰。
而又假如它们要求使用的软件包的版本也不同,如果来了更多的项目,我们又应该怎么办呢?
显然:方法一就不可行了,我们不可以同时安装两个不同版本的软件包,如Numpy, 我们要做的是为每个Numpy版本创建一个环境,然后项目才能在对应的环境中工作,这里就要使用方法二了,首先为每个项目创建一个环境,然后再在不同的环境中安装相应的安装包。
那我们该如何去创建对应的环境呢?--------利用conda
1.Anaconda
Python的出现使得编程语言更加简洁,但是它需要大量的包作为武器去使用,因此日后,人们每每学习python,都要去学习对应的库,就要去一个个下载对应的武器,拿过来使用直到有一天,有家数据公司受不了了,因为每每重新下载python都要去下载上百个武器浪费大量时间,所以这家公司就发明了anconda,它可以理解成运输车,每当下载anconda的时候,里面不仅包含了python,还有180多个库(武器)一同被打包下载下来
所以Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。因为包含了大量的科学包,Anaconda 的下载文件比较大(约 531 MB),如果只需要某些包,或者需要节省带宽或存储空间,也可以使用Miniconda
这个较小的发行版(仅包含conda和 Python)。
- Anaconda包括Conda、python以及一大堆安装好的工具包比如:numpy、pandas等。
- Miniconda只包括Conda、Python,是Anaconda的简约版,Miniconda也是一个软件发行版。Miniconda本质上是一个用来安装空的conda环境的安装器,它仅包含conda和conda的依赖,而不包含上一段中列举的包。所以我们可以从零开始,安装我们需要的东西。当然,我们也可以通过conda intall anaconda来将anaconda安装到其中。
Anaconda中base环境中已经集成安装好了conda和pip,,所以可以使用两种方式来安装我们想要的python软件包,,安装好了软件包在Scripts目录下可以找到。
1.1 Anaconda的下载与安装
第一步:官网下载,下载地址:https://www.anaconda.com/
第二步:安装完后,还需要配置Anaconda系统环境变量
第三步:命令窗口查看Anaconda是否安装成功,可以输入python,查看显示信息;然后检查conda是否安装成功,输入exit(),退出python环境(这里默认base环境),再输入conda,可以检查输出信息;
第四步:查看base环境安装的python和conda版本(python --version, conda --version)
第五步:打开Anaconda界面,打开Anaconda之后,点击Environments,就可以在界面创建和查看环境,点击creat就可以创建环境了,然后就通过conda命令来下载和卸载软件包
2. conda
conda是一个通用
的包管理器,意思是什么语言的包都可以用它进行管理,自然也包括python,它很像一个跨平台版本的apt或者yum,而且conda是开源的(github链接:https://github.com/conda/conda )
包管理工具是一个用来自动化安装、升级、删除packages的工具。由于Conda拥有“conda install“、”conda update“、”conda remove“等子命令,它完全符合包管理工具的定义。
conda是一个开源的包,可以用于在同一个机器上安装不同的环境,不同版本的软件包及其依赖,并能够在不同的环境之间切换。conda只能在conda环境中安装包,但是可以安装各种语言、各种类型的包。所以说,如果我们希望在一个已有的系统Python环境中安装Python包,conda是帮不了我们的,因为它只能在conda环境中安装包。
常用命令:
- conda info:显示conda的一些基本信息,后面如果加-e选项可以只显示所有已经创建的环境
- conda list:查看所有已经安装的包
- conda config:配置conda,后面加不同的选项可以完成不同的配置功能,上一节配置channel时用到了这个命令
- conda create:用于创建环境,例如conda create -n env_name package_name
- conda remove:用于删除环境,例如conda remove --name env_name –all
- conda install:在当前环境中安装包,例如conda install pkg
- conda remove:删除当前环境中的包,例如conda remove pkg
2.1 创建虚拟环境
方式有两种:命令创建和界面创建
2.1.1 命令创建
conda create -n (your _env_name package_name) python=X.X (2.7、3.6等)
eg:conda create -n myenv numpy matplotlib python=3.7
activate your_env_ name # 激活你想要切换的虚拟环境名
conda env list # 查看目前所有的环境名
deactivate your_env_ name(虚拟环境名) # 退出当前虚拟环境
创建python版本为:X.X,不指定时,默认安装最新Python版本
要安装的包 :package_name 根据需求下载,可不填
虚拟环境名字为: your _env_name
注意:your_env_name文件可以在Anaconda安装目录envs文件下找到
2.2 删除虚拟环境
方式有两种:命令删除和界面删除
2.2.1 命令删除
conda remove -n your_enev_name --all ,即可删除
conda remove -- name $your_enev_name $package_name(包名) #删除虚拟环境中的某个包
# 或者进入激活虚拟环境后,使用命令 conda uninstall package_name(包名)
2.2.2 界面删除
电脑开始菜单找到Anaconda Navigator,进入界面之后,选择Environments,选择你要删除的许环境名,单击remove按钮即成功删除该环境
3.pip
pip同conda一样,也是一个包管理器,但它只能管理python包,并且它是python官方认可的包管理器,其中pip的含义是Pip Installs Packages,最常用于安装在PyPI(Python Package Index, https://pypi.python.org/pypi )上发布的包,在通过conda list命令查看当前环境下已安装的package时,通过pip安装的package在Channel那一列会显示pypi
Pip可以在任何环境中安装包,但是只能安装Python包。所以说,如果我们需要用到很多依赖于外部dependencies的Python包(例如NumPy、SciPy和Matplotlib),或者如果我们想要跟踪这些包的外部依赖,那么pip是帮不了我们的,因为它只能管理Python包。
如果我们要做的仅仅是在相互独立的环境中安装Python包,那么conda的作用和pip+virtualenv的作用几乎是一样的。其中“相互独立的环境”指的是conda环境或者是virtualenv,在这样的环境中,我们可以在不修改系统Python安装的前提下安装各种包。
下面简单列一些相对常用的命令,更多的命令大家可以通过pip --help或者网上的资料来查:
- pip --version:查看已经安装了的pip版本
- pip install -U pip:升级pip
- pip list 或 pip freeze:查看当前已经安装好了包及版本
- pip install package_name(包名):下载安装包
- pip uninstall package_name(包名): 卸载安装包
- pip show package_name(包名):显示安装包信息(安装路径、依赖关系等)
3.1 镜像源
使用pip下载安装Python包时速度经常会十分缓慢,这主要是因为国内网络不稳定,解决办法是将pip安装源设置为国内的源即可,下载和速度会大幅度提升,而使用Conda安装时,因为网络原因也会经常出现HttpError的问题,下面就来详细介绍如何解决上述问题的方法。
pip国内常用镜像源
阿里云 http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban) http://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
这里推荐使用豆瓣和清华源,因为它们比较稳定
pip安装临时使用国内镜像源
可以在使用pip安装时在后面加上 -i 参数,来指定pip源,举例:
pip install numpy -i [https://pypi.douban.com/simple/] # 注意:http后面要加s
也可以永久安装
4.conda install 和 pip install的区别
conda install xxx:这种方式安装的库都会放在anaconda3/pkgs
目录下,这样的好处就是,当在某个环境下已经下载好了某个库,再在另一个环境中还需要这个库时,就可以直接从pkgs目录下将该库复制至新环境而不用重复下载。
pip install xxx:分两种情况,一种情况就是当前conda环境的python是conda安装的,和系统的不一样,那么xxx会被安装到anaconda3/envs/current_env/lib/python3.x/site-packages
文件夹中,如果当前conda环境用的是系统的python,那么xxx会通常会被安装到~/.local/lib/python3.x/site-packages
文件夹中
- pip是在特定的环境中进行库的安装,所以卸载库也是一样的道理,通过pip uninstall xxx就可以将该环境下Lib\site-packages中对应的库进行卸载了。
- 如果通过conda uninstall xxx删除当前环境下某个库时,删除的只是当前环境下site-packages目录中该库的内容,它的效果和通过pip uninstall
xxx是一样的。如果再到另一个环境中通过conda install
xxx下载这个库,则还是通过将pkgs目录下的库复制到当前环境。若要清空这个pkgs下的已下载库,可以通过命令conda clean -h进行实现。
5.开发常见搭配
只学习python语言的初学者可以先下载好特定版本的Python解释器后,然后再搭配界面程序Pycharm来进行简单的语法学习和项目调试,因为不需要考虑不同项目需要不同python工具包的版本问题。即:Python解释器 + Pycharm。
而要进行项目开发的人员,时常有多个项目同时开发,并且不同的项目需要不同版本的工具包,这时使用Anaconda可以帮助我们管理更多项目的环境,将每个项目单独放在一个虚拟环境中,并且使这些环境中工具包相互独立,不会产生工具包版本冲突问题,并且可以下载多个版本的工具包,可以安装多个不同版本的Python解释器。Anaconda自带Python解释器,即:Anaconda + Pycharm。