使用Conda管理Python环境

使用Conda管理Python环境

hash070 940 2023-02-26

简介

Conda是一个非常方便的开源包管理系统,可以用于在各种操作系统上安装管理软件包和环境。

在我们玩Python时,经常会遇到的问题Python版本不兼容的问题,而venv这样的工具,在不折腾的情况下,只能创建和当前宿主机Python环境版本号相同的Python环境,而利用Conda,我们就可以随意创建和切换虚拟Python环境了。

关于AnacondaConda之间的关系:

Anaconda是一个用于数据科学、机器学习和高性能计算的开源发行版,它基于Python语言,提供了大量常用的数据科学、机器学习和高性能计算的工具和库。Conda是Anaconda的包管理器,它主要用于管理Anaconda中的程序包和环境。所以Anaconda是Conda的发行版,Conda是Anaconda的包管理器。

我们应该选择安装哪个?

如果你是科学计算、数据分析或机器学习方面的开发人员,那么可能需要安装Anaconda,因为它预装了大量的数据科学工具和库。而如果你只是想使用Conda作为包管理器和环境管理器,那么您可以安装Miniconda,它只包含Conda和必要的依赖项。

AnacondaConda的发行版,而且内置了Conda,因此推荐直接一步到位安装Anaconda

安装Anaconda

带GUI的图形化操作系统

Anaconda官方网站

首先点击中间的Download按钮下载安装包

image.webp

安装过程很简单,直接无脑下一步就行了。

安装完毕后,打开一个新的终端窗口,输入conda --version命令,能正常显示版本号即代表安装成功

image.webp

不带GUI的操作系统

可以直接执行官方给的安装脚本:

进入发行版下载页面,找到Linux安装相关的链接,复制这个链接。

image.webp

在机器上执行Shell脚本即可开始安装

bash <(curl -s <安装脚本链接>)
# 例如
bash <(curl -s https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh)

使用Conda

一些常用的conda命令包括:

  • conda create: 创建一个新的环境
  • conda activate: 激活一个环境
  • conda install: 安装软件包
  • conda update: 更新软件包
  • conda list: 列出当前环境中安装的软件包
  • conda remove: 卸载软件包

通过使用这些命令,您可以在不影响其他环境的情况下安装、更新和管理软件包。

使用示例

查看所有可用的Python版本

在配置环境前,如果想知道有哪些Python3环境是可用的,那么可用使用下面这个命令来查询

conda search "^python=3"

创建多个Python虚拟环境

我们可以使用Conda在同一个系统中,创建多个不同的Python环境。比如说,我想创建一个名为py37的Python3.7环境还有一个名为py311的Python3.11环境,那我们就可以用下面这个命令创建

conda create --name py37 python=3.7
conda create --name py311 python=3.11

第一行命令创建了一个名为py37的Python环境,该环境的Python版本为:3.7
第二行命令创建了一个名为py311的Python环境,该环境的Python版本为:3.11

创建后,可以使用以下命令切换环境:

conda activate <env-name>
# 例如,切换到名为py37的Python环境
conda activate py37

退出与删除虚拟环境

如果我们需要退出Conda的虚拟环境,可以使用下面这个命令来退出:

conda deactivate

如果我们需要彻底删除一个Conda虚拟环境,可以用下面这个命令删除(假设要删除名为py311的虚拟环境):

conda remove --name py311 --all

为一个项目单独创建一个虚拟环境

看到这里,可能会有同学想:Conda可以像Pyvenv那样,将每个项目的虚拟环境的包放到当前项目下的vnev目录下吗?

其实是可以的,conda可以像pyvenv那样将每个项目的虚拟环境的包放到当前项目下的venv目录下。

可以使用以下命令创建一个名为myenv的虚拟环境,并将其安装在当前项目的venv目录下:

conda create --prefix ./venv/myenv python=3.7

然后你可以使用以下命令激活该虚拟环境:

conda activate ./venv/myenv

Conda环境配置的导出与导入

这里演示如何将项目的anacoda信息写到项目中(例如python版本、项目所需依赖),从而方便项目的其他协作者配置完全相同的环境

首先,使用conda env export命令,将当前的Conda环境导出到environment.yml文件中

conda env export > environment.yml

导出后,当我们(或同学)在一个新的机器上配置环境时就方便多了,直接使用下面这个命令来创建环境

conda env create -f environment.yml

注:如果你导出的Conda环境配置文件带prefix配置,即Conda环境指定了文件路径。它在重新配置时也许不会生效。此时你可以在创建环境的命令后面加上--prefix,例如:conda env create -f environment.yml --prefix ./venv/py38

常见问题

为什么我安装Anaconda后,终端前面都会默认带上(base)? 如何取消?

相关问题:StackOverflow

解决方案:

使用下面这个命令,将自动激活base环境的功能取消掉

conda config --set auto_activate_base false

同理,哪一天想开启的话,将它设置会true即可