环境#

conda 中的环境是独立的、隔离的空间,您可以在其中安装特定版本的软件包,包括依赖项、库和 Python 版本。这种隔离有助于避免包版本之间的冲突,并确保您的项目拥有所需的精确库和工具。

为什么我应该创建一个新环境?#

您可能想要创建一个新环境的原因有几个

依赖项隔离 - 环境将软件及其依赖项与计算机上安装的其他软件隔离。这意味着您的计算机上可以同时安装 Python 3.9 和 Python 3.10,并且可以使用这两个版本而不会遇到问题。

可重现性 - 通过为每个项目创建一个环境,您可以确保您的代码在不同的机器上一致运行。锁定您的环境以确保它无限期地保持可重现性,然后共享环境配置以允许其他人复制您的设置。

易于管理 - Conda 提供了轻松创建、管理和删除环境的工具。您可以快速在环境之间切换,从而可以轻松管理具有不同需求的多个项目。

测试和开发 - 环境非常适合测试新包或库,而不会影响您稳定的开发设置。您可以自由地进行实验,并在事情不顺利时删除环境,而不会影响您的其他项目。

为什么我不应该在基本环境中工作?#

首次安装和使用 conda 时,您可能看到了对名为 base 或“基本环境”的引用。此环境是 conda 本身安装的位置,应仅用于安装 anaconda、conda 和 conda 相关包,例如 anaconda-clientconda-build

但是,对于您的项目,Anaconda 强烈建议创建新环境来工作。这可以保护您的基本环境免受复杂依赖项冲突的破坏,并允许您轻松管理和在其他机器上重现您的环境。

使用环境#

为了方便起见,此处详细介绍了用户在管理环境时采取的最常见操作。有关操作的完整列表和更全面的指南,请参阅官方 conda 文档中的管理环境。或者,请按照我们在 Anaconda Cloud 上的Conda 环境入门教程进行操作。

提示

如果您喜欢通过我们的图形界面 Navigator 创建和管理环境,请参阅管理环境

创建环境#

通过打开 Anaconda Prompt(macOS/Linux 上的终端)并按照以下针对您的用例的步骤来创建 conda 环境

以下命令创建一个新环境并下载指定的包及其依赖项

# Replace <ENV_NAME> with a name for your environment
# Replace <PACKAGE> with your desired package
# Replace <VERSION> with your desired version (optional)
conda create --name <ENV_NAME> <PACKAGE>=<VERSION>

示例

conda create --name myenv python=3.11 beautifulsoup4 docutils jinja2=3.1.4 wheel
版本匹配输入示例

版本匹配使用 Matchspec 协议。以下是一些在创建环境时指定包版本的示例。有关更多信息,请参阅官方 conda 文档中的MatchSpec。如果您未指定包版本,conda 将尝试从其可用频道安装该包的最新版本。

  • python=3.12.1 - 匹配具有指定的确切名称和版本的包。

  • python>=3.11 - 匹配任何版本大于或等于指定版本的包。

  • python<=3.12 - 匹配任何版本小于或等于指定版本的包。

  • python>3.10,<3.12 - 匹配指定版本之间的任何包版本,但不包括指定的版本。

  • python>=3.10,<=3.12 - 匹配指定版本之间的任何包版本,包括指定的版本。

  • python[version='3.12.*'] - 匹配任何以 3.12 开头的 python 包版本。

如果有人与您共享了环境,或者您导出了 .yml 文件以在新机器上重新创建环境,请从包含 .yml 文件的目录运行以下命令

conda env create --file environment.yml

注意

文件的第一行设置环境的名称。有关更多信息,请参阅手动创建环境文件

激活环境#

由于环境是隔离的空间,因此您一次只能使用一个环境。选择要使用的环境称为激活环境。

通过运行以下命令激活环境

# Replace <ENV_NAME> with the name of the environment you want to activate
conda activate <ENV_NAME>

在环境之间切换#

当您准备好在项目之间切换时,只需激活您的其他项目的环境。激活不同的环境将停用您当前的环境。

  1. (可选)通过运行以下命令查看所有环境的列表

    conda info --envs
    
  2. 要切换到不同的环境,请通过运行以下命令激活它

    # Replace <ENV_NAME> with the name of the environment you want to switch to
    conda activate <ENV_NAME>
    

锁定环境#

确保您的项目无限期地保持可重现性的最可靠方法是“锁定”其环境。锁定环境会创建一个完全指定的环境,该环境具有项目中使用的所有包及其依赖项,并配置为特定版本。这确保了您的项目将完全按照最初配置的方式重现,因为如果发布新的包依赖项,则永远不会出现意外的更新或更改。

锁定您的项目需要将 conda-project 包安装在您要锁定的环境中。通过运行以下命令安装包

# Replace <ENV> with the environment you want to lock
conda activate <ENV>
conda install conda-project

如果您的项目不包含 environment.yml 文件,请通过运行以下命令创建一个

conda-project init

然后,您可以通过运行以下命令来锁定您的项目环境

conda-project lock

锁定您的项目会生成一个 conda-lock.default.yml 文件,您可以导出该文件以与他人共享。

共享环境#

与其他人共享您的环境允许他们使用 conda 在他们的机器上重新创建您的环境

要共享环境及其软件包,您必须将环境的配置导出到 .yml 文件中。

注意

仅将您的 Anaconda 或 Miniconda 文件复制到新目录或另一台机器上不会重新创建环境。您必须将环境作为一个整体导出。

导出环境配置 .yml 文件#

警告

如果您当前目录中已有一个环境配置文件 .yml 文件,它将在导出过程中被覆盖。

  1. 运行以下命令激活您想要导出的环境

    # Replace <ENV_NAME> with the name of the environment you want exported
    conda activate <ENV_NAME>
    
  2. 运行以下命令导出环境

    conda env export > environment.yml
    

    注意

    此文件同时处理环境的 pip 包和 conda 包。

  3. 与其他用户分享导出的环境配置文件 .yml 文件。

停用环境#

最佳实践是在您完成环境中的工作后停用环境。

要停用您当前激活的环境,请运行以下命令

conda deactivate