Conda 常用语法总结:Python 环境管理入门与实践
一、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 官方源中没有或版本较旧的包 |
一般建议:
- 优先使用
conda install - 如果 Conda 找不到,再使用
pip install - 尽量不要在同一个环境中频繁混用 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 包括:
defaultsconda-forgepytorchnvidia
添加 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 时,我建议养成以下习惯:
- 每个项目单独创建一个 Conda 环境;
- 创建环境时明确指定 Python 版本;
- 安装包前先确认当前环境是否正确;
- 重要项目不要随意
conda update --all; - 项目跑通后及时导出
environment.yml; - 如果环境冲突严重,不要硬修,直接新建环境往往更快;
- 深度学习项目中,优先确认 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 是非常值得掌握的基础工具。
更多推荐

所有评论(0)