Python虚拟环境和conda

Conda is an open source package management system and environment management system for installing multiple versions of software packages and their dependencies and switching easily between them. It works on Linux, OS X and Windows, and was created for Python programs but can package and distribute any software.

这里有几个早些时候录制的演示视频:

conda

很多情况下划分不同的Python虚拟环境是有必要的。Python提供了venv工具实现虚拟环境管理,这个工具很轻,但权限有限,且只能使用pip进行软件包管理。conda解决了venv的问题,是一个更强大的虚拟环境管理工具。

具体地,miniconda相比与Anaconda更轻量,下载和安装都更快。

安装(mini)conda

由于种种原因,访问conda官网通常不太顺利,作者一般用清华大学镜像站替代。

这里可以看到conda镜像使用帮助,这里提供miniconda安装包/脚本存档。

这篇文章写于2023年7月10日,此时能下载的最新的miniconda版本是4.9.2,以Linux_x86_64系统为例:

1
2
3
4
5
$ wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py39_4.9.2-Linux-x86_64.sh # 下载
$ bash Miniconda3-py39_4.9.2-Linux-x86_64.sh # 安装,一般不需要sudo权限
# 依据提示接受条款、选择安装路径、写入环境变量(安装脚本自动完成,用户选择是/否即可)
$ source ~/.bashrc # 或新开一个终端窗口
# 默认在<用户-主机-命令提示符>这串东西前出现(base)字样,表示当前所处的虚拟环境

个人习惯,一般不用base环境。

常用的conda命令

使用conda的工作流可能像这样:

  • 创建环境和激活环境
  • 安装各种需要的东西(以PyTorch为例)
  • 查看所有
  • 导出环境
  • 依据导出的环境创建环境(导入环境)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 查看所有conda环境
$ conda env list
$ conda info -e # 请看茴香豆的另一种吃法
$ conda info --envs # 请看茴香豆的再一种吃法

# 创建conda环境(更准确地说是Python虚拟环境),下面演示茴香豆的若干种吃法
$ conda create -n <env_name>
$ conda create -n <env_name> python=<python_version>
$ conda create -n py3.8 python=3.8 numpy pandas matplotlib # 一个实际的例子

# 安装各种东西
$ conda activate py3.8
$ conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia # PyTorch为例
$ pip install # “在conda里也可以用pip”

# 安装之前可以先搜索所有可用版本,再指定某一具体版本
$ conda uninstall numpy # 以numpy为例,先卸载当前安装的版本
$ conda search numpy
$ conda install numpy=<version_id>=<build_id> # build_id即子版本号,要注意version_id太小(安装古早版本的numpy可能导致依赖崩溃使得无法安装)

# 导出和导入
$ conda env export -n <env_name> > <export_file_name>.yaml
$ conda env create -f <export_file_name>.yaml # 其实是创建一个新环境

除了上述命令外,还有:

  • 查看conda版本:看这个干什么?
  • 更新conda:用conda命令的时候会返回更新提示,照做就好
  • 更新其他包(如numpy):相信我你不会想更新的,如果需要用更新版本的包(如升级torch1.x到2.x),应该新开一个环境
  • 换源:这个确实重要,看tuna的文档就行,顺便说一句,conda的配置写在~/.condarc文件中
  • 查看当前环境中安装了哪些东西:conda list,通常后面接grep查看某个具体的包的信息