Conda 安装配置及常用命令

发布于:2025-09-02 ⋅ 阅读:(87) ⋅ 点赞:(0)

介绍

Conda 是一个开源的软件包和环境管理系统,在数据科学、机器学习、科学计算等领域广泛应用

主要用途

  • 环境管理:能够创建相互隔离的虚拟环境,每个环境可以有不同的 Python 版本以及不同的软件包版本,以此避免不同项目间的依赖冲突。比如,项目 A 依赖 Python 3.7 和 numpy 1.18,项目 B 依赖 Python 3.9 和 numpy 1.21,使用 Conda 就能为这两个项目分别创建独立的环境。
  • 软件包管理:Conda 可快速安装、更新和卸载软件包,并且能自动处理软件包之间的依赖关系。例如,安装 TensorFlow 时,Conda 会自动安装其依赖的 numpy、protobuf 等软件包。

特点

  • 跨平台性:支持 Windows、macOS 和 Linux 等多种操作系统,在不同操作系统上都能使用相同的命令进行环境和软件包管理。
  • 多语言支持:虽然常与 Python 搭配使用,但也能管理其他编程语言的软件包,像 R、Java 等。
  • 强大的依赖解析:能自动分析并解决软件包之间的依赖冲突,保证安装的软件包版本相互兼容。

核心概念

  • 环境(Environment):一个独立的、隔离的软件包集合,其中包含特定版本的 Python 解释器和一系列软件包。你可以按需创建、激活、停用和删除环境。
  • 通道(Channel):是软件包的存储库,Conda 会从通道中下载软件包。常见的通道有 defaults、conda-forge 等。不同通道可能包含不同的软件包或同一软件包的不同版本。
  • 软件包(Package):是预先编译好的软件组件,可通过 Conda 进行安装、更新和卸载。

安装

wget -c https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh
bash Anaconda3-2024.10-1-Linux-x86_64.sh

安装路径默认:/root/anaconda3,可以更改为其他路径,比如 /opt/anaconda3

环境变量

vi /etc/profile
export PATH=/opt/anaconda3/bin:$PATH
# 默认安装路径
# export PATH=~/anaconda3/bin:$PATH
source /etc/profile

更换镜像源

conda

vi ~/.condarc
channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
  - defaults
show_channel_urls: true
 
ssl_verify: true
allow_conda_downgrades: true

注:根据实际情况选择是否保留 defaults ,如果明确不需要可以不保留,另外如果配置了 clash 代理,保留 defaults 会影响正常使用。

pip

mkdir ~/.pip
vi ~/.pip/pip.conf
[global] 
index-url = http://mirrors.aliyun.com/pypi/simple/ 
[install] 
trusted-host=mirrors.aliyun.com

常用命令

Channel

添加单个渠道
# 新添加的通道在最前面(优先级最高)
conda config --add channels <channel_name_or_url>
# 新添加的通道在最后面(优先级最低)
conda config --append channels <channel_name>

例如,添加 conda-forge 渠道:
conda config --add channels conda-forge

这里也可以直接使用完整地址:
conda config --append channels https://conda.anaconda.org/conda-forge

执行该命令会将渠道添加到 ~/.condarc

查看当前配置的渠道
conda config --show channels

默认:

channels:
  - defaults

如果按照上面的步骤添加了 ~/.condarc ,则返回 ~/.condarc 中的渠道:

channels:
  - conda-forge
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
  - defaults
  - https://conda.anaconda.org/conda-forge

与 ~/.condarc 中的内容一致。

删除渠道
conda config --remove channels <channel_name_or_url>

conda config --remove channels conda-forge
conda config --remove channels https://conda.anaconda.org/conda-forge
设置渠道优先级
conda config --set channel_priority strict
conda config --set channel_priority flexible
  • strict : 严格优先级,当启用严格优先级时,Conda 会严格按照通道在配置中的顺序来选择包
    • 优先从排序靠前的通道中安装包,只有当靠前的通道中没有所需包时,才会考虑后面的通道;
    • 即使后面的通道中有更新版本的包,也会优先选择前面通道中的旧版本。
  • flexible : 灵活优先级,灵活优先级模式下,Conda 会综合考虑所有通道,优先选择最新版本的包,而不完全受通道顺序的限制。
    • 会从所有可用通道中选择满足依赖条件的最新版本包,即使该包来自排序较后的通道。
    • 通道顺序仍有一定影响,但版本新旧是更重要的判断因素。
查看渠道优先级
conda config --show channel_priority
常见 conda 渠道及其地址
  1. Anaconda 官方渠道
  • 名字:defaults
  • 地址:它包含多个子仓库,例如:
  • https://repo.anaconda.com/pkgs/main:主要包含核心的、常用的跨平台软件包,像 Python 解释器、numpy、pandas 等。
  • https://repo.anaconda.com/pkgs/r:专门用于 R 语言相关的软件包。
  • https://repo.anaconda.com/pkgs/msys2:提供 Windows 系统上的 MSYS2 环境相关的软件包。
  1. conda-forge
  • 名字:conda-forge
  • 地址:https://conda.anaconda.org/conda-forge
    这是一个社区驱动的渠道,提供大量更新及时、种类丰富的软件包,涵盖了众多领域,是很多用户常用的渠道之一。
  1. bioconda
  • 名字:bioconda
  • 地址:https://conda.anaconda.org/bioconda
    专注于生物信息学领域的软件包,如果你从事生物信息学研究或开发,这个渠道非常有用,包含了如 bwa、samtools 等常用工具。
  1. pytorch
  • 名字:pytorch
  • 地址:https://conda.anaconda.org/pytorch
    主要提供 PyTorch 深度学习框架及其相关依赖库,方便用户安装和管理 PyTorch 环境。
清华大学镜像源

channels:

  • https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  • https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
  • https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
  • https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
  • https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda
  • https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
  • https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r

环境

创建环境
基础创建命令
# 创建指定名称的环境(默认使用当前 Conda 配置的 Python 版本,即 base 环境中的 Python 版本)
conda create --name <环境名称>

# 示例:创建名为 "python-default" 的环境
conda create --name python-default
# --name 可以简写为 -n
conda create -n python-default
指定 Python 版本创建环境
# 创建指定 Python 版本的环境
conda create --name <环境名称> python=<版本号>

# 示例:创建 Python 3.8 版本的 "mlenv" 环境
conda create -n python3.8 python=3.8
# 也可以具体到小版本号
conda create -n python3.10 python=3.10.9
指定路径

通过 -n 指定环境名称方式创建的 Python 环境,默认路径为 /root/anaconda3/envs/环境名

conda create -p /opt/python/envs/python3 python=3.8

-n 和 -p 不能同时指定,通过 -p 指定路径时如果路径不是在默认路径下,那么该环境没有环境名,只有对应的路径

创建环境时同时安装包
# 创建环境并安装指定包
conda create --name <环境名称> <1> <2>=<版本号>

# 示例:创建 "datenv" 环境并安装 pandas 和 Python 3.8
conda create --name datenv python=3.8 pandas numpy=1.21.0
从配置文件创建环境
# 从 environment.yml 文件创建环境
conda env create -f environment.yml

# 示例:根据当前目录下的配置文件创建
conda env create -f ./environment.yml

举例:tpcx-ai 中的创建环境命令:

conda env create --prefix ./lib/python-venv-ks --file tools/python/python-ks.yaml

python-ks.yaml :

name: python-venv-ks
dependencies:
  - python=3.9
  - setuptools=58.0
  - pandas=1.5.2
  - scikit-learn=1.2.2
  - xgboost=1.7.3
  - numpy=1.23.5
  - nose=1.3.7
  - scipy=1.10.0
  - statsmodels=0.12.2
  - patsy=0.5.3
  - tqdm=4.65
  - keras=2.11.0
  - tensorflow=2.11.0
  - joblib=1.1.1
  - opencv=4.6.0
  - pyyaml=6.0
  - matplotlib=3.7.1
  - jinja2=3.1.2
  - pycryptodome=3.15
  - gcc_linux-64=11.2.0
  - gxx_linux-64=11.2.0
  - cmake=3.9.1
# pip
  - pip
  - pip:
    - --index-url http://mirrors.aliyun.com/pypi/simple/
    - --trusted-host mirrors.aliyun.com
#-workloads
    - tensorflow-addons==0.19.0
    - scikit-surprise==1.1.3
    - librosa==0.8.1
    - imbalanced-learn==0.10.1
    - dlib

上面的 yaml 指定了环境的名称,conda 的依赖,conda 会下载 pip ,同时指定了 pip 的依赖,下载完 pip 后,再用 pip 下载后面的依赖。

创建环境时指定通道
# 指定额外的通道来安装包
conda create --name <环境名称> -c <通道名称> <包名>

# 示例:从 conda-forge 通道安装最新版本的 matplotlib
conda create --name vizenv -c conda-forge matplotlib
查看有哪些环境
conda env list
克隆已有环境
# 克隆现有环境(复制一个相同的环境)
conda create --name <新环境名称> --clone <被克隆的环境名称>
conda create -n <新环境名称> --clone <被克隆的环境路径>
conda create --prefix <新环路径> --clone <被克隆的环境名称>
conda create -p <新环路径> --clone <被克隆的环境路径>

# 示例
conda create -n python2-copy --clone python2
conda create -p /opt/python/envs/python2-copy3 --clone python2
conda create  -n python2-copy5 --clone /opt/python/envs/python2-copy3 
删除环境
conda env remove -n <environment_name>
conda env remove -p <environment_path>
# 示例
conda env remove -p /opt/python/envs/python2-copy3 
激活环境
conda activate <environment_name>
conda activate <environment_path>

效果:

  • 激活后,命令行提示符前会显示 (环境名称),表示当前处于该环境中
    • 用 conda env list 查看有哪些环境
    • 对于有名称的既可以使用名称激活也可以使用路径激活,激活后显示名称 (在默认路径下 /root/anaconda3/envs 的都有名称)
    • 对于没有名称的只能用路径激活,如果该路径的父路径的名称为 envs 则显示名称,名称为最后一级路径名,如果父路径的名称不是 envs ,则显示绝对路径
  • 此时安装的包会被安装到该环境中
  • 调用的 Python 解释器和相关工具都是该环境下的版本
退出当前激活的环境
conda deactivate

效果:

  • 退出后,命令行提示符前的 (环境名称) 会消失
  • 回到 Conda 的基础环境(base)或系统默认环境

依赖

查看某个依赖有哪些版本可以下载
conda search <package_name>
# 示例
conda search opencv

# 更详细的信息(包括通道和平台)
conda search --info <包名>
使用 Conda 查看已安装依赖
# 查看当前激活环境中的所有已安装包
# conda list 会显示所有通过 Conda 和 pip 安装的包(标注了安装来源)
conda list

# 查看指定环境中的已安装包(无需激活该环境)
conda list -n <环境名称>

# 搜索当前环境中是否安装了某个特定包
conda list <包名>

# 示例:检查当前环境是否安装了 pandas
conda list pandas
使用 pip 查看已安装依赖
# 查看当前环境中 pip 安装的所有包
pip list

# 以简洁格式显示(仅包名和版本)
# 比 pip list 返回的依赖要少,如 pip、setuptools 等不会显示
# pip freeze 常用于导出依赖列表到文件(如 pip freeze > requirements.txt
pip freeze

# 搜索指定包是否已安装
pip list | grep <包名>  # Linux/macOS

# 示例:检查是否安装了 requests
pip list | grep requests  # Linux/macOS
使用conda删除依赖

# 删除单个依赖包
conda remove numpy
conda uninstall numpy

# 删除多个依赖包
conda remove numpy pandas

# 在指定环境中删除依赖包
conda remove -n myenv scipy

# 删除环境中所有依赖包(清空环境),与删除环境效果一样
conda remove -n myenv --all
使用 pip 删除依赖
# 在当前激活的环境中删除指定包
pip uninstall <包名>

# 示例:删除当前环境中的 requests
pip uninstall requests

# 静默删除(无需确认),上面的其他很多命令都支持 -y
pip uninstall -y <包名>
清理缓存:
conda clean --all
pip 安装不用缓存
pip install --no-cache-dir

网站公告

今日签到

点亮在社区的每一天
去签到