如何在environment.yml文件中指定Python版本范围?

exa*_*xan 5 python anaconda conda

在environment.yml 文件中指定允许的Python 版本范围是否有意义?我在阅读Google 的 Biq Query 文档时得到了这个想法

Supported Python Versions
Python >= 3.7, < 3.11
Run Code Online (Sandbox Code Playgroud)

如果这是有意义的,那么在environment.yml 文件中指定范围的正确语法是什么?

mer*_*erv 5

建议:更喜欢精确版本,而不是范围

虽然为 Python 指定版本范围在逻辑上没有任何错误,但它的缺点是定义了较大的解决方案空间,这可能会导致求解速度缓慢。对于实际环境,我建议python通过次要版本指定版本,例如python=3.9.

请注意,此行为主要与定义其他包的变体的中央包有关,例如pythonr-basecudatoolkit。对于大多数其他软件包来说,影响并不那么严重。

标杆管理

这是一个用于基本数据分析的简单环境,指定或不指定 Python 版本。

so-py39.yaml

name: so-py39
channels:
  - conda-forge
  - nodefaults
dependencies:
  - python ==3.9
  - ipykernel
  - numba
  - pandas
  - scikit-learn
  - scipy
Run Code Online (Sandbox Code Playgroud)

so-py3x.yaml

name: so-py3x
channels:
  - conda-forge
  - nodefaults
dependencies:
  - python >=3.7,<4.0
  - ipykernel
  - numba
  - pandas
  - scikit-learn
  - scipy
Run Code Online (Sandbox Code Playgroud)

康达

首先,我们可以使用常规conda命令。

命令

command time conda env create -dqn foo -f [file]
Run Code Online (Sandbox Code Playgroud)

结果

Timing creating environment: so-py39.yaml
       20.51 real        19.57 user         0.94 sys
       20.73 real        19.84 user         0.97 sys
       19.43 real        18.66 user         0.95 sys
       19.22 real        18.36 user         0.92 sys
       19.34 real        18.48 user         0.94 sys
       19.08 real        18.16 user         0.94 sys

Timing creating environment: so-py3x.yaml
       30.53 real        29.56 user         1.00 sys
       29.21 real        28.21 user         1.08 sys
       31.13 real        29.77 user         1.07 sys
       29.93 real        28.46 user         0.99 sys
       30.53 real        29.43 user         0.98 sys
       28.60 real        27.68 user         1.03 sys
Run Code Online (Sandbox Code Playgroud)

也就是说,求解一定范围的环境需要大约 10 秒(大约 50%)的时间。

曼巴

我们还可以测试使用 Mamba 解决环境问题。

命令

command time mamba env create -dqn foo -f [file]
Run Code Online (Sandbox Code Playgroud)

结果

Timing creating environment: so-py39.yaml
        3.30 real         2.79 user         0.49 sys
        3.36 real         2.84 user         0.51 sys
        3.25 real         2.74 user         0.49 sys
        3.34 real         2.82 user         0.51 sys
        3.29 real         2.78 user         0.51 sys
        3.24 real         2.74 user         0.48 sys

Timing creating environment: so-py3x.yaml
        3.27 real         2.79 user         0.47 sys
        3.26 real         2.78 user         0.46 sys
        3.33 real         2.83 user         0.48 sys
        3.28 real         2.79 user         0.47 sys
        3.31 real         2.81 user         0.49 sys
        3.29 real         2.81 user         0.47 sys
Run Code Online (Sandbox Code Playgroud)

这表明使用 Mamba 时求解时间的差异可以忽略不计。