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 文件中指定范围的正确语法是什么?
虽然为 Python 指定版本范围在逻辑上没有任何错误,但它的缺点是定义了较大的解决方案空间,这可能会导致求解速度缓慢。对于实际环境,我建议python通过次要版本指定版本,例如python=3.9.
请注意,此行为主要与定义其他包的变体的中央包有关,例如python、r-base或cudatoolkit。对于大多数其他软件包来说,影响并不那么严重。
这是一个用于基本数据分析的简单环境,指定或不指定 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 时求解时间的差异可以忽略不计。