envs.yaml与requirements.txt

“envs.yaml” 文件通常用于配置和管理环境变量(Environment Variables)的设置。环境变量是在计算机操作系统中存储配置信息的一种常见方式,它们可以影响程序的行为和设置。通常,环境变量用于存储敏感信息(例如API密钥)或配置信息(例如数据库连接字符串),以便在不同的应用程序或环境中共享。

“requirements.txt” 文件是用于指定 Python 项目的依赖关系的文本文件。它通常包含了项目所需的 Python 包及其版本信息。这个文件的主要目的是帮助确保项目在不同环境中的一致性,以及方便其他开发人员或部署系统在其环境中安装相同的依赖项。

本文主要包括以下内容:

  • 1. conda环境的转移和复制
  • 2. pip环境的转移和复制
  • 3. env.yaml中的常用配置函数示例
  • 4. requirements.txt示例

1. conda环境的转移和复制

从 conda 内部导出已有环境配置内容,保存至environments.yaml中。

conda env export > environments.yaml

安装environments.yaml文件

conda env create -f environments.yaml

注:.yaml文件移植过来的环境只是安装了你原来环境里用conda install等命令直接安装的包,你用pip之类装的东西没有移植过来,需要你重新安装。

2. pip环境的转移和复制

用下面的命令自动生成requirement.txt

pip freeze > requirements.txt

执行下面的命令一键安装完所需要的第三方库

pip install -r requirements.txt

3. env.yaml中的常用配置函数示例

“env.yaml” 文件通常包含了用于创建和配置 Conda 环境的信息,其中包括要安装的软件包、软件包的版本以及其他环境配置选项。

以下是一个包含 “env.yaml” 中常用配置函数的示例,演示了如何使用这些配置项来定义一个完整的 Conda 环境配置文件:

name: my_full_environment  # 环境的名称

channels:
  - defaults  # Conda 渠道,用于获取软件包的源
  - conda-forge  # 额外的渠道

dependencies:
  - python=3.9  # Python 版本
  - numpy=1.21.2  # 安装特定版本的软件包
  - pandas=1.3.3
  - matplotlib  # 安装最新版本的软件包
  - scikit-learn
  - jupyter
  - pip:
    - requests==2.26.0  # 使用 pip 安装其他 Python 包

prefix: /path/to/my_full_environment  # 环境的安装路径

explicit: true  # 显式创建的环境

create_default_packages:
  - ipython  # 创建环境时自动安装的软件包

pinned_packages:
  - numpy=1.21.2  # 固定软件包的版本

allow_softlinks: false  # 不允许使用软链接

auto_activate_base: false  # 不自动激活 base 环境

在 Conda 的环境配置文件中,除了 dependencies 部分,还可以使用其他配置项来定义环境的各个方面。以下是在上面的示例中,“env.yaml” 文件的一些常见的配置项:

  1. name: 环境的名称,用于标识虚拟环境。

  2. channels: Conda 渠道的列表,用于从中获取软件包。默认情况下,包括 “defaults” 渠道。

  3. dependencies: 列出要安装的软件包及其版本。这是最常用的配置项,用于指定环境的软件包依赖项。

  4. prefix: 环境的安装路径,指定环境将安装在哪个目录中。

  5. prefix_length: 环境路径的字符数限制。

  6. channels_remap: 用于重新映射渠道的字典,允许你将软件包从一个渠道映射到另一个渠道。

  7. explicit: 布尔值,指定环境是否是显式创建的(True)还是自动创建的(False)。

  8. create_default_packages: 指定在创建环境时应自动安装的软件包列表。

  9. ignore_pinned: 布尔值,指定是否应忽略软件包的固定版本。

  10. auto_activate_base: 布尔值,指定是否自动激活 base 环境。

  11. disable_pip: 布尔值,指定是否禁用虚拟环境中的 pip。

  12. pinned_packages: 列表,包含要固定版本的软件包及其版本号。

  13. allow_softlinks: 布尔值,指定是否允许使用软链接。

  14. create_env_opts: 字典,包含在创建环境时传递给底层环境管理器的选项。

这些配置项允许你更精确地控制 Conda 环境的创建和配置过程,以满足特定项目或应用程序的需求。你可以在环境配置文件中使用这些选项来定义虚拟环境的行为和特性。

4. requirements.txt示例

以下是一个示例的 “requirements.txt” 文件,其中列出了一些 Python 包的依赖关系及其版本:

# 一个示例的 requirements.txt 文件

numpy==1.21.2           # 指定具体的版本号
pandas>=1.3.3           # 允许安装版本号大于等于 1.3.3 的 pandas
matplotlib              # 安装最新版本的 matplotlib
scikit-learn==0.24.2    # 固定版本号为 0.24.2 的 scikit-learn
requests                 # 未指定版本,安装最新版本的 requests

在上面的示例中,每行表示一个依赖项,其格式通常为:

package_name[operator]version
  • package_name 是 Python 包的名称。
  • operator 是可选的,可以是 ==(精确版本)、>=(大于等于版本)等。如果没有指定操作符,默认为 ==
  • version 是所需的包的版本号。

你可以根据你的项目需求编辑 “requirements.txt” 文件,指定需要的 Python 包及其版本。然后,可以使用 pip install -r requirements.txt 命令来安装这些依赖项,确保你的项目具有所需的环境和依赖项。

请注意,通常建议在虚拟环境中使用 “requirements.txt” 文件来管理项目的依赖关系,以确保项目的依赖项与其他项目隔离开来,以及更好地实现一致性。

补充:

要分辨虚拟环境中的包是由 Conda 管理还是由 pip 管理,可以执行以下步骤:

使用 Conda 查看环境中的包

  1. 激活你的虚拟环境,以确保你正在查看特定环境中的包。你可以使用以下命令激活环境:

    conda activate your_environment_name
    
  2. 使用 conda list 命令来查看当前环境中已安装的包。这将列出由 Conda 管理的所有包,并且这些包的名称通常会显示在包名前面。

    conda list
    
  3. 查看包列表中的包名称。如果包的名称没有特殊的标记,通常是由 Conda 管理的。Conda 管理的包可能没有显示版本号,因为 Conda 不仅管理 Python 包,还管理系统级依赖项和 Conda 包。

使用 pip 查看环境中的包

  1. 激活你的虚拟环境,以确保你正在查看特定环境中的包。你可以使用以下命令激活环境:

    conda activate your_environment_name
    
  2. 使用 pip list 命令来查看当前环境中由 pip 管理的包。这将列出通过 pip 安装的 Python 包,通常是标准的 Python 包名称。

    pip list
    
  3. 查看包列表中的包名称。如果包的名称没有特殊的标记,通常是由 pip 管理的。这些包通常会显示版本号,因为 pip 管理的包通常会显示详细的版本信息。

请注意,有时会出现同时使用 Conda 和 pip 管理的情况,这可能会导致包之间的冲突。因此,最好选择一种包管理工具来管理虚拟环境中的所有包,以避免潜在的问题。如果你希望迁移包管理工具或解决包冲突,可以查看相关文档或重新创建虚拟环境。

你可能感兴趣的:(python)