一、Conda 是什么?

在使用 Python 做深度学习、机器学习、数据分析或者科研项目时,经常会遇到不同项目依赖不同版本库的问题。

例如:

  • 项目 A 需要 Python 3.8
  • 项目 B 需要 Python 3.10
  • 项目 C 需要 TensorFlow 2.14
  • 项目 D 需要 PyTorch 2.x

如果所有包都安装在同一个 Python 环境中,很容易出现版本冲突。为了解决这个问题,可以使用 Conda 来管理不同的 Python 环境。

简单来说:

Conda 是一个环境管理和包管理工具,可以为不同项目创建独立的 Python 运行环境。


二、查看 Conda 版本

安装 Conda 后,可以使用以下命令查看版本:

conda --version

或者:

conda -V

示例输出:

conda 24.1.2

如果能够正常显示版本,说明 Conda 已经安装成功。


三、查看已有环境

查看当前电脑或服务器中已有的 Conda 环境:

conda env list

或者:

conda info --envs

示例输出:

# conda environments:
#
base                  *  /opt/anaconda3
THz                      /opt/anaconda3/envs/THz
fyp                      /opt/anaconda3/envs/fyp
sionna_env               /opt/anaconda3/envs/sionna_env

其中带有 * 的环境表示当前正在使用的环境。

例如:

base                  *

表示当前处于 base 环境中。


四、创建新的 Conda 环境

创建环境时,最常用的语法是:

conda create -n 环境名 python=版本号

例如,创建一个名为 myenv 的环境,并指定 Python 版本为 3.10:

conda create -n myenv python=3.10

创建过程中,Conda 会提示是否继续安装相关依赖:

Proceed ([y]/n)?

输入:

y

即可继续。

如果不指定 Python 版本:

conda create -n myenv

也可以创建环境,但通常不推荐。实际项目中最好明确指定 Python 版本,减少后续兼容性问题。


五、激活 Conda 环境

创建环境后,需要激活该环境:

conda activate 环境名

例如:

conda activate myenv

激活成功后,终端前面通常会出现环境名:

(myenv) user@server:~$

这说明当前已经进入 myenv 环境。


六、退出当前环境

退出当前 Conda 环境:

conda deactivate

如果当前在 myenv 环境中,执行后通常会回到 base 环境:

(base) user@server:~$

如果继续执行一次:

conda deactivate

则可能会退出到系统默认 shell 环境。


七、删除 Conda 环境

如果某个环境不再使用,可以删除它:

conda remove -n 环境名 --all

例如删除 myenv

conda remove -n myenv --all

Conda 会列出将要删除的包,并询问是否继续:

Proceed ([y]/n)?

输入:

y

即可删除。

注意:删除环境前,一定要确认当前没有正在使用该环境运行程序。


八、安装 Python 包

在 Conda 环境中,可以用 conda install 安装包:

conda install 包名

例如:

conda install numpy

也可以一次安装多个包:

conda install numpy pandas matplotlib

指定版本安装:

conda install numpy=1.26.4

指定 channel 安装:

conda install -c conda-forge 包名

例如:

conda install -c conda-forge netcdf4

其中 conda-forge 是一个常用的第三方 Conda 软件源,里面有很多更新、更全的包。


九、使用 pip 安装包

有些包在 Conda 中可能找不到,或者 Conda 安装版本不合适,这时可以使用 pip:

pip install 包名

例如:

pip install torch

指定版本:

pip install numpy==1.26.4

安装 requirements.txt 中的依赖:

pip install -r requirements.txt

注意:在 Conda 环境中使用 pip 时,一定要先激活目标环境。

例如:

conda activate myenv
pip install package_name

否则包可能被安装到错误的环境中。


十、conda install 和 pip install 的区别

命令 特点
conda install 更适合安装 Python 包以及底层依赖,例如 CUDA、MKL、编译库等
pip install 更适合安装 PyPI 上的 Python 包,包数量更多
conda install -c conda-forge 适合安装 Conda 官方源中没有或版本较旧的包

一般建议:

  1. 优先使用 conda install
  2. 如果 Conda 找不到,再使用 pip install
  3. 尽量不要在同一个环境中频繁混用 Conda 和 pip,容易产生依赖冲突

比较稳妥的做法是:

conda create -n myenv python=3.10
conda activate myenv
conda install numpy pandas matplotlib
pip install 其他conda中没有的包

十一、查看当前环境中已安装的包

查看当前环境中所有已安装的包:

conda list

如果只想查某个包:

conda list numpy

示例:

conda list torch

也可以使用 pip 查看:

pip list

查看某个包的详细信息:

pip show 包名

例如:

pip show torch

十二、更新包

更新某个包:

conda update 包名

例如:

conda update numpy

更新 Conda 本身:

conda update conda

更新当前环境中的所有包:

conda update --all

不过实际项目中不建议随意执行:

conda update --all

因为它可能会改变很多包的版本,导致原本能运行的项目出现兼容性问题。

科研项目或深度学习项目中,环境稳定比盲目更新更重要。


十三、导出 Conda 环境

为了让别人复现自己的环境,或者以后自己重新配置环境,可以导出当前环境:

conda env export > environment.yml

这会生成一个 environment.yml 文件,里面记录了当前环境中的包和版本。

建议在项目目录下执行:

conda activate myenv
conda env export > environment.yml

这样项目文件夹中就会保存一份环境配置文件。


十四、根据 environment.yml 创建环境

如果别人给了一个 environment.yml 文件,可以使用:

conda env create -f environment.yml

创建完成后,查看环境:

conda env list

然后激活环境:

conda activate 环境名

如果想在创建时指定新的环境名,可以使用:

conda env create -f environment.yml -n new_env_name

十五、更新已有环境

如果当前已经有环境,并且想根据 environment.yml 更新它,可以使用:

conda env update -f environment.yml

如果想删除环境中多余的包,使环境尽量和 environment.yml 保持一致,可以使用:

conda env update -f environment.yml --prune

十六、导出更干净的环境文件

直接使用:

conda env export > environment.yml

有时会导出很多系统相关信息,例如具体的安装路径、平台相关依赖等。

如果只是想记录自己手动安装过的主要依赖,可以使用:

conda env export --from-history > environment.yml

这种方式导出的文件更简洁,更适合跨设备或跨服务器复现环境。

不过它也有缺点:有些由 pip 安装的包可能不会完整记录。因此实际使用中,可以根据情况选择。

常见做法:

conda env export --from-history > environment.yml
pip freeze > requirements.txt

这样 Conda 和 pip 的依赖都可以保存下来。


十七、克隆 Conda 环境

如果想复制一个已有环境,可以使用:

conda create -n 新环境名 --clone 原环境名

例如:

conda create -n myenv_backup --clone myenv

这样会创建一个 myenv_backup 环境,内容和 myenv 基本一致。

这个方法适合在修改环境前做备份。


十八、重命名 Conda 环境

Conda 本身没有非常直接的重命名命令,常用方法是先克隆,再删除原环境。

例如把 old_env 改名为 new_env

conda create -n new_env --clone old_env
conda remove -n old_env --all

这样就相当于完成了环境重命名。


十九、清理 Conda 缓存

Conda 使用时间久了以后,会积累很多安装包缓存,占用磁盘空间。可以使用:

conda clean --all

执行后会提示是否删除缓存文件:

Proceed ([y]/n)?

输入

y

即可。

如果只想清理安装包缓存:

conda clean --packages

如果只想清理压缩包缓存:

conda clean --tarballs

在云服务器上,如果系统盘空间不足,清理 Conda 缓存通常会有帮助。


二十、查看 Conda 配置信息

查看 Conda 的基本信息:

conda info

查看 Conda 配置:

conda config --show

查看当前配置了哪些 channels:

conda config --show channels

二十一、配置 Conda channels

Conda 安装包时会从 channels 中查找软件包。常见 channel 包括:

  • defaults
  • conda-forge
  • pytorch
  • nvidia

添加 channel:

conda config --add channels conda-forge

设置安装时显示 channel 来源:

conda config --set show_channel_urls yes

如果想删除某个 channel:

conda config --remove channels channel_name

例如:

conda config --remove channels conda-forge

实际使用中,如果只是偶尔从某个 channel 安装包,可以不全局添加,而是临时指定:

conda install -c conda-forge package_name

这样更可控。


二十二、设置不自动进入 base 环境

安装 Anaconda 或 Miniconda 后,有时每次打开终端都会自动进入 base 环境。

如果不希望自动进入 base,可以执行:

conda config --set auto_activate_base false

之后重新打开终端,就不会自动显示:

(base)

如果之后想恢复自动进入 base

conda config --set auto_activate_base true

二十三、查看 Python 和 pip 路径

在 Conda 环境中,有时候需要确认当前使用的 Python 和 pip 是否属于当前环境。

Linux / macOS:

which python
which pip

Windows:

where python
where pip

示例输出:

/opt/anaconda3/envs/myenv/bin/python
/opt/anaconda3/envs/myenv/bin/pip

如果路径中包含当前环境名,例如 myenv,说明使用的是正确环境。

也可以查看 Python 版本:

python --version

查看 pip 版本:

pip --version

二十四、在 Jupyter Notebook 中使用 Conda 环境

如果想在 Jupyter Notebook 中选择自己的 Conda 环境,需要安装 ipykernel

conda activate myenv
conda install ipykernel

然后把当前环境注册到 Jupyter:

python -m ipykernel install --user --name myenv --display-name "Python (myenv)"

之后打开 Jupyter Notebook 或 JupyterLab,就可以在 Kernel 中选择:

Python (myenv)

如果要删除某个 Jupyter kernel:

jupyter kernelspec list

找到对应名称后删除:

jupyter kernelspec uninstall myenv

二十五、GPU 环境中的 Conda 使用建议

在深度学习项目中,GPU 环境经常涉及:

  • NVIDIA 驱动
  • CUDA
  • cuDNN
  • PyTorch
  • TensorFlow

这里需要注意一个常见误区:

nvidia-smi 显示的 CUDA Version 不一定等于你 Conda 环境中安装的 CUDA 版本。

例如 nvidia-smi 显示:

CUDA Version: 11.7

这通常表示当前显卡驱动最高支持的 CUDA 版本,而不是当前 Python 环境中实际使用的 CUDA 版本。

在 PyTorch 中,可以使用:

import torch

print(torch.__version__)
print(torch.cuda.is_available())
print(torch.version.cuda)
print(torch.cuda.get_device_name(0))

如果输出:

True

说明 PyTorch 可以正常使用 GPU。

安装 PyTorch 时,建议根据官网命令安装,不要随便复制旧命令。例如:

conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

或者使用 pip:

pip install torch torchvision torchaudio

具体命令应根据服务器驱动、CUDA 支持情况和项目要求选择。


二十六、常见问题 1:conda activate 无效

如果执行:

conda activate myenv

出现错误,例如:

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'

可以执行:

conda init

然后重新打开终端。

如果使用的是 zsh:

conda init zsh

如果使用的是 bash:

conda init bash

之后关闭并重新打开终端,再尝试:

conda activate myenv

二十七、常见问题 2:包安装到了错误环境

有时候明明安装了包,但运行 Python 时仍然报错:

ModuleNotFoundError: No module named 'xxx'

这通常是因为包安装到了另一个环境。

建议检查:

which python
which pip
conda env list

然后确认当前环境是否正确:

conda activate myenv
pip show xxx

如果 pip show 找不到,说明当前环境中没有安装该包,需要重新安装:

pip install xxx

二十八、常见问题 3:环境冲突严重怎么办?

如果 Conda 提示大量依赖冲突,例如:

Solving environment: failed

或者一直卡在:

Solving environment

可以尝试以下方法。

方法一:创建新环境

不要在旧环境里反复修补,直接创建一个干净环境通常更快:

conda create -n new_env python=3.10
conda activate new_env

然后重新安装项目依赖。

方法二:减少一次性安装的包

不要一次安装太多包,可以先安装核心包:

conda install numpy pandas matplotlib

再逐步安装深度学习框架或其他依赖。

方法三:使用 conda-forge

有些包在默认源中版本较旧,可以尝试:

conda install -c conda-forge package_name

方法四:使用 mamba

mamba 是一个更快的 Conda 替代工具,解决依赖速度更快。

安装:

conda install -n base -c conda-forge mamba

之后可以使用:

mamba install package_name

或者:

mamba create -n myenv python=3.10

二十九、一个实际项目环境配置示例

假设我要创建一个用于时间序列预测项目的环境,使用 PyTorch、pandas、numpy 和 matplotlib。

1. 创建环境

conda create -n time_series python=3.10

2. 激活环境

conda activate time_series

3. 安装常用科学计算包

conda install numpy pandas matplotlib scikit-learn

4. 安装 PyTorch

根据自己的服务器情况安装对应版本。例如:

conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

5. 测试 GPU 是否可用

进入 Python:

python

输入:

import torch

print(torch.cuda.is_available())
print(torch.version.cuda)

如果输出:

True

说明 GPU 可用。

6. 导出环境

conda env export --from-history > environment.yml

这样以后可以通过 environment.yml 复现环境。


三十、常用命令总结

命令 功能
conda --version 查看 Conda 版本
conda env list 查看所有 Conda 环境
conda info --envs 查看所有 Conda 环境
conda create -n env_name python=3.10 创建新环境
conda activate env_name 激活环境
conda deactivate 退出当前环境
conda remove -n env_name --all 删除环境
conda list 查看当前环境已安装的包
conda install package_name 安装包
conda install package_name=版本号 安装指定版本的包
conda install -c conda-forge package_name 从指定 channel 安装包
conda update package_name 更新指定包
conda update conda 更新 Conda
conda env export > environment.yml 导出完整环境
conda env export --from-history > environment.yml 导出手动安装的主要依赖
conda env create -f environment.yml 根据环境文件创建环境
conda create -n new_env --clone old_env 克隆环境
conda clean --all 清理缓存
conda config --set auto_activate_base false 关闭自动进入 base 环境
which python 查看当前 Python 路径
which pip 查看当前 pip 路径

三十一、个人使用建议

在实际使用 Conda 时,我建议养成以下习惯:

  1. 每个项目单独创建一个 Conda 环境;
  2. 创建环境时明确指定 Python 版本;
  3. 安装包前先确认当前环境是否正确;
  4. 重要项目不要随意 conda update --all
  5. 项目跑通后及时导出 environment.yml
  6. 如果环境冲突严重,不要硬修,直接新建环境往往更快;
  7. 深度学习项目中,优先确认 Python、PyTorch/TensorFlow、CUDA 版本是否匹配。

三十二、总结

Conda 是 Python 项目开发中非常重要的环境管理工具,尤其适合科研、机器学习和深度学习项目。

日常最常用的命令其实并不多:

conda create -n env_name python=3.10
conda activate env_name
conda env list
conda list
conda install package_name
conda remove -n env_name --all
conda env export > environment.yml

熟练掌握这些命令后,就可以比较稳定地管理多个项目环境,减少依赖冲突带来的麻烦。

对于经常使用云服务器、跑深度学习模型或者维护多个 Python 项目的人来说,Conda 是非常值得掌握的基础工具。

更多推荐