动机
1. 由于不同项目需要的环境需求不同,要使不同项目都能在同一台电脑上正常运行,需要多个环境共存且互不影响;
2. 可以优雅地解决恼人的 cuda 版本问题:
以往的经典做法是在物理机上安装多个版本的 cuda,通过修改环境变量的方式实现 cuda 的版本切换,为此我开发过一个方便 cuda 版本切换的小工具:
https://github.com/george-chou/CUDA_Ver_Switcher
而自从使用了 conda,就不需要在物理机层面上安装和切换 cuda 版本了,只要创建多个虚拟环境,为每个环境安装所需要的 cuda 版本,虚拟环境可以随用随建,环境之间可以灵活切换,想丢弃的时候可以随时删除,不会搞乱自己的电脑环境!
conda 与 pip 关系
使用 conda 可创建多个环境,每个环境里对应一个版本的python及其pip,关系图如下:
创建环境命令
例如创建一个名为 env1 的 python3.8 虚拟环境:
conda create -n env1 python=3.8
切换到名为 env1 的环境:
conda activate env1
在 env1 环境下安装 pytorch + cuda 套装,推荐使用 pytorch 官网的命令,例如安装 cuda11.3 套装:
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch
在目前的环境下还可以运行 pip install,例如安装 matplotlib
pip install matplotlib
可以使用conda list
查看此环境下所有安装的包,输出例子如下:
# Name Version Build Channel
absl-py 1.3.0 pypi_0 pypi
astunparse 1.6.3 pypi_0 pypi
autopep8 2.0.0 pypi_0 pypi
ca-certificates 2022.10.11 haa95532_0 defaults
cachetools 4.2.4 pypi_0 pypi
certifi 2022.12.7 py38haa95532_0 defaults
chardet 5.0.0 pypi_0 pypi
charset-normalizer 2.1.1 pypi_0 pypi
cudatoolkit 11.3.1 h59b6b97_2 defaults
cycler 0.11.0 pypi_0 pypi
其中 Channel 为 pypi 的包是通过 pip install
安装的,Channel 为 defaults 的包是通过 conda install
安装的,整体命令行逻辑结构图如下: