conda和python是什么关系(怎么用conda创建Python虚拟环境)
conda和python是什么关系(怎么用conda创建Python虚拟环境)Anaconda安装程序:https://www.anaconda.com/products/individualAnaconda或者Miniconda的安装很简单,你只需根据你的操作系统选择相应的安装程序,一步一步安装就可以了。Anaconda是一个大杂烩,包含了conda程序,同时还包含许多用于数据分析的模块,比如Numpy、Pandas、Seaborn等。另外Anaconda还有个很适合进行数据分析和机器学习的Python IDE—Spyder。Spyder使用起来非常方便,可以很方便地查看程序中的变量和程序的输出,如果你用Python进行数据分析,可以试试使用Spyder。相比之下Miniconda则是一个精简版,只含有conda和一些必须的模块,体量很小,安装很方便。如果你是conda新手,或者经常需要使用数据分析的模块,那么建议使用Anaconda,所有的模块都是现成的。如果你
Python虚拟环境是一个相对独立、隔绝的环境,该环境内Python模块是独立的,不会受到外部系统的影响。
在上篇怎么用venv创建Python虚拟环境中,我们介绍了如何运用传统的virtualenv/venv来创建Python虚拟环境。使用virutalenv/venv来创建虚拟环境很简便,可移植性很强,是创建Python虚拟环境的首选方式,但是有时用virtualenv/venv却不能满足我们的要求。首先,在使用virtualenv/venv时,我们不能在不同的虚拟环境里面使用不同的Python版本;其次,有的模块用pip安装不太方便(特别是在Windows系统)比如网络爬虫模块Scrapy,因为这些模块复杂的库依赖不能用pip方便地解决,这时conda的优势就体现出来了。
什么是conda?conda是一个开源的模块及虚拟环境管理系统。我们可以把conda看做是pip和venv的合体,也就是说使用conda既可以创建、删除虚拟环境,也可以安装、更新和删除库。另外venv只能创建Python的虚拟环境,conda则不限于Python,还可以用于其他语言比如R语言。
安装conda要使用conda,我们首先得安装Anaconda或者Miniconda。
Anaconda是一个大杂烩,包含了conda程序,同时还包含许多用于数据分析的模块,比如Numpy、Pandas、Seaborn等。另外Anaconda还有个很适合进行数据分析和机器学习的Python IDE—Spyder。Spyder使用起来非常方便,可以很方便地查看程序中的变量和程序的输出,如果你用Python进行数据分析,可以试试使用Spyder。
相比之下Miniconda则是一个精简版,只含有conda和一些必须的模块,体量很小,安装很方便。
如果你是conda新手,或者经常需要使用数据分析的模块,那么建议使用Anaconda,所有的模块都是现成的。如果你是conda老油条了,不想默认安装一堆自己不了解的库,只想用conda创建虚拟环境并且只安装自己想要的库,那么Miniconda则是一个更好的选择。
Anaconda或者Miniconda的安装很简单,你只需根据你的操作系统选择相应的安装程序,一步一步安装就可以了。
Anaconda安装程序:https://www.anaconda.com/products/individual
Miniconda安装程序:https://docs.conda.io/en/latest/miniconda.html
设置及启动conda在MacOS及Linux环境下,如果在安装时你选择将conda加入.bashrc或者.profile里面,则新开的终端会自动启动conda。如果你没有选择那个选项或者不想默认启动conda,可以生成一个脚本来手动启动conda。该脚本的内容在安装Anaconda或者Miniconda的时候会显示在屏幕上,你只需要将它们拷到一个脚本文件里面即可,比如说$HOME/activate_conda.sh,在需要使用conda的时候手动跑这个脚本即可。
在Windows下,你可以搜索“Anaconda prompt”来启动conda运行环境。另外如果你更喜欢使用图形操作界面,你可以使用Anaconda Navigator,在搜索框里面搜索Anaconda Navigator即可找到。本文将重点介绍命令行的使用,这些命令在任何操作系统上都能使用。
Anaconda Navigator
base环境当打开Anaconda Prompt或者打开Linux/MacOS的终端的时候,默认的环境是base。这个是conda自动生成的环境,如果你没有创建新的环境,则所有的操作都在base环境里面进行。如果你只是用Anaconda来进行数据分析,你可能并不需要创建虚拟环境,但是如果你想安装不同版本的模块,甚至不同版本的Python时,则需要使用创建新的虚拟环境。
创建新的环境conda create --name scrapy-env
这样我们生成了一个名为scrapy-env的环境。
这个环境里面只有一些系统基本的模块,我们后续可以根据自己的需要在其中安装自己所需要的模块。
如果我们我们想指定环境里面的Python版本,可以使用
conda create --name python38-env python=3.8
这里我们创建了一个名为python38-env的虚拟环境,该环境里Python的版本指定为Python3.8,这个是conda相比virtualenv/venv最重要的一点,因为在用virtualenv/venv时环境中Python的版本受系统Python版本的限制,而在使用conda时,环境里Python的版本则不受系统Python版本的限制。
列举所有的虚拟环境conda info -e
# or
conda env list
激活虚拟环境
我们将使用环境scrapy-env:
conda activate scrapy-env
这里我们要安装的是网络爬虫模块Scrapy,安装Scrapy是使用conda的一个很好的例子。因为Scrapy有很复杂的库依赖,在Windows上用pip安装时经常会出现问题,所以在Windows上推荐使用conda来安装Scrapy。
conda install --channel conda-forge scrapy
在安装时我们可以看到除了主模块Scrapy,所有Scrapy运行所需要的程序和模块都会自动安装。特别需要注意的是,在该环境里面我们并有预先没安装Python,conda在安装Scrapy的时候会自动给我们下载和安装所需要的Python版本。
另外这里我们并没有指定Scrapy模块的版本,则默认安装其最新的版本,我们也可以指定安装某个特定的版本:
conda install --channel conda-forge scrapy=2.4
另外需要指出的是--channel指定的是该模块所来自的频道,常见的频道有anaconda和conda-forge,如果不指定频道,则默认从anaconda频道安装。对于特殊的模块还有其特定的频道,比如机器学习/深度学习模块PyTorch就有自己pytorch频道。同一个模块在不同频道里面的最新版本可能会不一样,在用conda安装某个模块时,可以在该模块的官网找到所推荐的频道。
如果我们需要更新某个模块,则可以使用
conda update --channel conda-forge scrapy
同样,在更新模块时,也需要指定频道,因为不同频道里面相同模块的最新版本可能会不一样。
复制环境首先查看环境中安装的所有模块:
conda list
我们可以将环境中的模块设置导出到文件
conda list --explicit > conda-requirements.txt
使用--explict在输出中会列举模块的URL,这样便于查看和后续的安装。
我们可以从配置文件中克隆一个完全一样的环境,这个和用pip从requirements.txt文件克隆环境是一样的。
conda create --name scrapy-env-clone --file conda-requirements.txt
删除环境
当我们不需要某个环境时,可以将其删除:
conda env remove --name scrapy-clone
结语
本文介绍了conda的基本概念和常用命令,你可根据自己的需要来决定是使用venv还是conda来创建Python虚拟环境。一般情况是,如果不需要使用特定的Python版本或者特殊的有复杂库依赖的模块,可以使用venv创建环境,因为其更轻便、更容易复制和移植。但如果有上述这两个特殊情况时,则conda是更好的选择。以上列举的conda的命令在大多数情况下已经够用了,如果你需要学习其他conda命令,可以参考conda的官网。