在环境中指定允许的Python版本范围有意义吗?yml文件?我在阅读谷歌的Biq查询文档时得到了这个想法
Supported Python Versions
Python >= 3.7, < 3.11
如果这有意义,那么在环境中指定范围的正确语法是什么?yml文件?
建议:使用精确版本,而不是范围
虽然为Python指定版本范围在逻辑上没有什么不正确的,但它有定义一个大的解决方案空间的缺点,这可能导致缓慢的解决。对于实际环境,我建议通过次要版本(例如python=3.9
)指定python
的版本。
注意,这种行为主要适用于定义其他包的变体的中心包,如python
、r-base
或cudatoolkit
。对于大多数其他包,影响没有那么大。
so-py39.yaml
name: so-py39
channels:
- conda-forge
- nodefaults
dependencies:
- python ==3.9
- ipykernel
- numba
- pandas
- scikit-learn
- scipy
so-py3x.yaml
name: so-py3x
channels:
- conda-forge
- nodefaults
dependencies:
- python >=3.7,<4.0
- ipykernel
- numba
- pandas
- scikit-learn
- scipy
Conda
首先,我们可以使用常规的conda
命令
命令
command time conda env create -dqn foo -f [file]
结果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
也就是说,求解具有范围的环境需要多花~10s(~50%)的时间。
曼
我们还可以用Mamba测试解决环境问题。
命令
command time mamba env create -dqn foo -f [file]
结果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
这表明当使用Mamba时,求解时间的差异可以忽略不计。
标题>