Python虚拟环境是一个相对独立的孤立环境,其环境内的Python模块是独立的,不受外部系统的影响。
上一篇介绍了如何使用venv创建Python虚拟环境,以及如何使用传统的virtualenv/venv创建Python虚拟环境。 使用virutalenv/venv创建虚拟环境简单、可移植,是创建Python虚拟环境的最佳方法,但virtualenv/venv可能无法满足要求。 首先,使用virtualenv/venv时,不能在不同的虚拟环境中使用不同的Python版本。 其次,也有使用pip安装不方便的模块。 特别是在Windows系统中,例如web爬虫模块Scrapy,由于这些模块的复杂库依赖无法通过pip轻松解决,从而体现出conda的优势。
什么是conda?
conda是开源模块和虚拟环境管理系统。 可以把conda看成是pip和venv的合体。 也就是说,conda允许您创建、删除虚拟环境,以及安装、更新和删除库。 另外,venv只能创建Python的虚拟环境。 conda不限于Python,也可以用于r语言等其他语言。要使用
安装conda
密码,必须首先安装Anaconda或迷你密码。Anaconda是包含conda程序的大杂烩,也包含很多用于Numpy、Pandas、Seaborn等数据分析的模块。 Anaconda还拥有最适合数据分析和机器学习的Python IDE—Spyder。 Spyder非常容易使用,可以轻松查看程序内的变量和程序的输出。 使用Python进行数据分析时,请尝试使用Spyder。
相比之下,Miniconda是精简版,只包含conda和几个必需模块,卷小,安装方便。
如果您是conda初学者,或者需要经常使用数据分析模块,则建议使用Anaconda。 所有模块都可以马上使用。 如果你变成了condarzdlq,不想默认安装一堆自己不知道的库,只想用conda创建虚拟环境,只安装自己想要的库,那么Miniconda是更好的选择。
Anaconda或Miniconda的安装很简单。 根据操作系统选择合适的安装程序,然后一步一步安装即可。
Anaconda安装程序: https://www.anaconda.com /产品/Individual
迷你康达安装程序: https://Docs.Conda.IO/EN/latest /迷你康达. html
在
设置及启动conda
macos和Linux环境中,如果在安装时选择向. bashrc或. profile添加代码,新终端将自动启动代码。 如果未选择该选项,或者不希望缺省启动代码,则可以生成脚本以手动启动代码。 安装Anaconda或Miniconda时,该脚本的内容将显示在画面上。 例如,您可以在需要使用conda时手动运行该脚本,例如$HOME/activate_conda.sh。在Windows上,可以搜索“Anaconda prompt”以启动conda运行时环境。 另外,如果您喜欢图形操作界面,可以使用anaconda导航器在搜索框中搜索anaconda导航器。 本文将重点介绍可用于任何操作系统的命令行的使用。
美国航空导航器
base环境
打开anaconda prompt或Linux/MacOS终端时,缺省环境为base。 这是conda自动生成的环境,如果没有创建新环境,则所有操作都将在base环境中进行。 如果只使用Anaconda进行数据分析,可能不需要创建虚拟环境,但如果要安装不同版本的模块或不同版本的Python,则需要使用创建新的虚拟环境。像
创建新的环境
conda create-- names crapy-env一样,我们创造了一个叫做scrapy-env的环境。这个环境只有系统的基本模块。 然后,可以根据需要安装所需的模块。
如果要指定环境中的Python版本,请使用
conda create-- name python38-env python=3.8在此,我们创建了一个名为python 38-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的官网。