conda 使用文档

4 阅读15分钟

conda 是由 Anaconda 公司维护的跨语言、跨平台包与环境管理器。它不仅能管理 Python 包,还能管理编译器(gcc/clang)、CUDA、R、Julia、二进制库(OpenSSL、ffmpeg、HDF5 等),是数据科学与机器学习领域事实上的标准工具。


目录

  1. 简介与生态
  2. 发行版选择(Miniconda / Anaconda / Miniforge / Mambaforge)
  3. 安装与升级
  4. 核心概念
  5. 环境管理
  6. 包管理
  7. 频道(Channel)与 conda-forge
  8. environment.yml 与项目化
  9. conda 与 pip 协同
  10. mamba / micromamba 加速
  11. 国内镜像加速
  12. GPU / CUDA 工作流
  13. Jupyter / 数据科学工作流
  14. 私有源、企业内网与代理
  15. 构建与发布 conda 包
  16. Docker 与 CI 集成
  17. IDE 集成
  18. 迁移指南
  19. 常见问题与排错
  20. conda vs pip vs uv 对比
  21. 命令速查表
  22. 推荐学习资源

1. 简介与生态

1.1 conda 是什么

conda 是一个通用的二进制包管理器,与语言无关。它管理的"包"是带有平台标签的预编译二进制(.conda / .tar.bz2),无需源码编译即可安装,特别适合需要 C/C++/Fortran/CUDA 扩展的科学计算栈。

1.2 生态全景

组件作用
conda包/环境管理器(CLI)
Anaconda包含 conda + 数百个常用包的"全家桶"发行版
Miniconda仅含 conda 与 Python 的精简发行版(推荐入门)
Miniforge默认使用 conda-forge 频道的开源发行版(社区推荐)
conda-forge社区维护的开源频道,包数量与更新速度远超官方 defaults
bioconda生物信息学专用频道
mambaC++ 重写的 conda 兼容工具,速度快数倍
micromamba单一二进制版 mamba,无需预装 conda
conda-build构建自定义 conda 包的工具
anaconda.org公共与私有 conda 包托管平台

1.3 为什么选 conda

  • 管理非 Python 依赖:CUDA、cuDNN、MKL、OpenCV、ffmpeg、PROJ、GDAL 等系统库,pip 安装常出问题,conda 可一键搞定。
  • 跨平台一致:同一份 environment.yml 在 Win/macOS/Linux 上能装出几乎相同的二进制环境。
  • 环境彻底隔离:每个环境带自己的 Python、C 库、CUDA 工具链。
  • 不需要管理员权限:所有内容装在用户目录。

1.4 何时不该用 conda

  • 纯 Python Web 项目、轻量 CLI、库开发:uv / pip 更快更轻。
  • 不需要 C/CUDA 扩展且追求极速依赖解析的场景。

2. 发行版选择

发行版大小默认频道适合人群
Anaconda~3 GBdefaults教学、快速上手、不在意磁盘
Miniconda~80 MBdefaults想自己控制装哪些包
Miniforge~80 MBconda-forge推荐:默认开源、商业可用
Mambaforge(已并入 Miniforge)~80 MBconda-forge旧名,现在 Miniforge 自带 mamba

⚠️ 商业使用注意:Anaconda 公司自 2020 年起对商业使用 defaults 频道收费(>200 人组织)。企业用户应使用 Miniforge + conda-forge,完全免费。


3. 安装与升级

3.1 Windows

下载安装器(推荐 Miniforge):

# Miniforge
curl -L -o Miniforge3.exe https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Windows-x86_64.exe
./Miniforge3.exe                # 双击运行图形安装器

或使用 winget:

winget install --id=Anaconda.Miniconda3 -e
# 或
winget install --id=CondaForge.Miniforge3 -e

安装后,使用「Miniforge Prompt」或「Anaconda Prompt」启动一个已初始化的终端。

3.2 macOS / Linux

# Miniforge(推荐)
curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
bash Miniforge3-$(uname)-$(uname -m).sh

# Miniconda
curl -L -O https://repo.anaconda.com/miniconda/Miniconda3-latest-$(uname)-$(uname -m).sh
bash Miniconda3-latest-$(uname)-$(uname -m).sh

按提示一路回车,最后回答 yes 让安装器写入 shell 初始化脚本。

3.3 验证与初始化

conda --version
conda info

# 重新初始化某个 shell
conda init bash         # zsh / fish / powershell / cmd.exe

3.4 升级 conda 自身

conda update -n base conda
conda update --all -n base   # 升级 base 环境所有包(谨慎)

3.5 卸载

直接删除安装目录(默认 ~/miniconda3~/miniforge3),并清理 shell 配置文件中的 >>> conda initialize >>> 块。


4. 核心概念

4.1 base 环境

安装 conda 时自带的根环境,永远不要往里装项目依赖——只放 conda、mamba 等管理工具。每个项目用单独环境。

4.2 环境(environment)

一个独立的目录,包含自己的 Python 解释器、二进制库、site-packages。位置:

  • 默认:<安装目录>/envs/<env_name>/
  • 可在任意路径创建:conda create -p ./venv ...(叫 prefix 环境)

4.3 频道(channel)

包的来源服务器。常见频道:

  • defaults — Anaconda 公司维护(商业受限)
  • conda-forge — 社区维护(推荐)
  • bioconda — 生物信息
  • pytorchnvidiahuggingface — 厂商频道

4.4 包格式

  • .conda — 新格式(zstd 压缩,更快)
  • .tar.bz2 — 旧格式
  • 命名:numpy-1.26.4-py312h7f0e7c6_0.conda(包名-版本-构建串)

4.5 解析器(solver)

  • classic — 老解析器,速度慢
  • libmamba ⭐ — 新解析器(conda 23.10+ 默认),快数倍
conda config --set solver libmamba

5. 环境管理

5.1 创建环境

conda create -n myenv python=3.12              # 命名环境
conda create -n ds python=3.12 numpy pandas    # 创建时安装包
conda create -p ./venv python=3.12             # prefix 环境(项目本地)
conda create -n myenv --clone base             # 克隆现有环境
conda create -n myenv --file requirements.txt  # 从 requirements 创建

5.2 激活与退出

conda activate myenv
conda activate ./venv      # prefix 环境
conda deactivate           # 退出

5.3 列出环境

conda env list             # 或 conda info --envs

5.4 删除环境

conda env remove -n myenv
conda remove -p ./venv --all

5.5 重命名

conda rename -n old new

5.6 导出与重建

# 完整导出(含构建串,平台特定)
conda env export -n myenv > environment.yml

# 跨平台导出(不含构建串)
conda env export -n myenv --no-builds > environment.yml

# 仅导出显式安装的包(最干净)
conda env export -n myenv --from-history > environment.yml

# 从文件创建
conda env create -f environment.yml

# 更新现有环境
conda env update -f environment.yml --prune    # --prune 移除不再需要的包

6. 包管理

6.1 搜索

conda search numpy
conda search 'numpy>=1.26'
conda search -c conda-forge 'pytorch=2.3.*'
conda search 'python=3.12.*[build=*cpython*]'   # 高级匹配

6.2 安装

conda install numpy pandas
conda install -c conda-forge polars
conda install -n myenv numpy                    # 装到指定环境
conda install 'numpy=1.26'                      # 精确版本
conda install 'numpy>=1.26,<2'                  # 范围
conda install --only-deps scikit-learn          # 仅装依赖(用于离线打包)
conda install --no-deps somepkg                 # 不装依赖(高级用法)

6.3 更新

conda update numpy
conda update --all                              # 更新当前环境所有包(谨慎)
conda update -n myenv --all

6.4 卸载

conda remove numpy
conda remove -n myenv numpy pandas
conda remove --force somepkg                    # 不检查依赖(危险)

6.5 查看已安装

conda list                                      # 当前环境
conda list -n myenv
conda list numpy                                # 过滤
conda list --explicit > spec-file.txt           # 含 URL 的精确清单

6.6 包信息

conda info numpy
conda search numpy --info                       # 含构建依赖

6.7 锁定与重现

# 生成精确锁文件(含 URL + 哈希,平台特定)
conda list --explicit > spec-file.txt

# 在另一台同平台机器上重建
conda create -n myenv --file spec-file.txt

# 跨平台锁定推荐使用 conda-lock
pip install conda-lock
conda-lock -f environment.yml -p linux-64 -p osx-arm64 -p win-64
conda-lock install -n myenv conda-lock.yml

7. 频道(Channel)与 conda-forge

7.1 频道优先级

conda config --show channels
conda config --add channels conda-forge         # 添加到最前
conda config --append channels bioconda         # 添加到最后
conda config --remove channels defaults
conda config --set channel_priority strict      # 严格按频道优先级(推荐)

strict 优先级避免不同频道的包混装造成 ABI 不兼容。

7.2 切换到 conda-forge 为主

~/.condarc(Windows 为 %USERPROFILE%\.condarc):

channels:
  - conda-forge
  - nodefaults
channel_priority: strict

7.3 临时使用某频道

conda install -c conda-forge -c pytorch pytorch

7.4 常用专业频道

频道用途
conda-forge通用社区频道
bioconda生物信息
pytorchPyTorch 官方
nvidiaCUDA / cuDNN / NCCL
huggingfaceTransformers 等
pyviz / holoviz可视化
numbanumba / numbapro

8. environment.yml 与项目化

8.1 标准 environment.yml

name: ml-project
channels:
  - conda-forge
  - pytorch
  - nvidia
  - nodefaults
dependencies:
  - python=3.12
  - numpy>=1.26
  - pandas
  - scikit-learn
  - pytorch=2.3.*
  - pytorch-cuda=12.1
  - jupyterlab
  # pip 兜底
  - pip
  - pip:
      - some-pypi-only-package
      - -e .                        # 安装本项目(开发模式)
variables:
  CUDA_VISIBLE_DEVICES: "0"

8.2 操作

conda env create -f environment.yml             # 创建
conda env update -f environment.yml --prune     # 更新(与文件对齐)
conda env export --from-history > environment.yml   # 反向导出

8.3 多文件分层

environment-base.yml 通用、environment-dev.yml 加测试工具:

# environment-dev.yml
name: ml-project
channels: [conda-forge]
dependencies:
  - --file environment-base.yml      # 不直接支持,需手动合并
  - pytest
  - ruff

conda 原生不支持 include,常用做法是用 conda-lock 或脚本化合并。

8.4 prefix 环境(项目本地)

conda env create -f environment.yml -p ./.conda
conda activate ./.conda
echo ".conda/" >> .gitignore

类似 node_modules 风格,环境跟着项目走。


9. conda 与 pip 协同

9.1 黄金法则

能用 conda 装的就用 conda 装,剩下的再用 pip。

顺序很重要:先 conda install,最后 pip install。反向操作可能导致 conda 后续覆盖 pip 装的包。

9.2 environment.yml 中的 pip 段

dependencies:
  - python=3.12
  - numpy
  - pip
  - pip:
      - fastapi
      - 'uvicorn[standard]'
      - -r requirements-pip.txt    # 引用外部文件
      - -e .                        # 当前项目可编辑安装

9.3 检查冲突

conda list                          # pip 安装的包以 <pip> 标记
pip check                           # 检查依赖完整性

9.4 在 conda 环境里使用 uv(强力组合)

conda create -n hybrid python=3.12 -c conda-forge
conda activate hybrid
conda install -c conda-forge cudatoolkit=12.1 cudnn      # 系统级依赖给 conda
pip install uv
uv pip install torch transformers                         # 纯 PyPI 依赖给 uv(飞快)

10. mamba / micromamba 加速

10.1 mamba

C++ 重写的 conda 兼容工具,命令几乎一一对应,速度快 5–10 倍。

conda install -n base -c conda-forge mamba

mamba install numpy pandas
mamba create -n ds python=3.12 numpy
mamba env create -f environment.yml
mamba update --all

conda 23.10+ 已默认使用 libmamba 解析器,多数情况下原生 conda 也已经很快。

10.2 micromamba

单一静态二进制(约 10 MB),无需 Python,可在轻量容器/CI 中替代 conda。

# Linux/macOS
curl -L micro.mamba.pm/install.sh | bash

# Windows
Invoke-WebRequest -URI https://micro.mamba.pm/api/micromamba/win-64/latest -OutFile micromamba.tar.bz2

用法:

micromamba create -n ds -f environment.yml -c conda-forge -y
micromamba activate ds
micromamba install numpy

适合 Docker 镜像 —— 比完整 Miniconda 小一个数量级。


11. 国内镜像加速

商业用户使用 Anaconda 镜像需注意授权;conda-forge 镜像无此限制。

11.1 清华源(TUNA)

~/.condarc

channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  nvidia: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

11.2 中科大源(USTC)

把上面的 mirrors.tuna.tsinghua.edu.cn 替换为 mirrors.ustc.edu.cn 即可。

11.3 阿里云

default_channels:
  - https://mirrors.aliyun.com/anaconda/pkgs/main
  - https://mirrors.aliyun.com/anaconda/pkgs/r
custom_channels:
  conda-forge: https://mirrors.aliyun.com/anaconda/cloud

11.4 命令行配置

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --set show_channel_urls yes
conda config --show               # 查看完整配置
conda config --remove-key channels   # 重置为默认

11.5 同时给 pip 配镜像

~/.pip/pip.conf(Windows 为 %APPDATA%\pip\pip.ini):

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

12. GPU / CUDA 工作流

conda 最大的优势之一:CUDA 工具链按环境隔离,不污染系统。

12.1 PyTorch(官方推荐方式)

conda create -n torch python=3.12 -c conda-forge
conda activate torch
conda install pytorch torchvision pytorch-cuda=12.1 -c pytorch -c nvidia

验证:

python -c "import torch; print(torch.cuda.is_available(), torch.version.cuda)"

12.2 TensorFlow

conda create -n tf python=3.11 -c conda-forge
conda activate tf
conda install -c conda-forge tensorflow-gpu
# 或最新版用 pip
pip install 'tensorflow[and-cuda]'

12.3 仅安装 CUDA Toolkit(给其他工具用)

conda install -c nvidia cuda-toolkit=12.1
conda install -c conda-forge cudnn

12.4 多 CUDA 版本共存

每个 conda 环境一个 CUDA 版本,激活哪个用哪个,互不干扰。

conda create -n cu118 python=3.11 pytorch pytorch-cuda=11.8 -c pytorch -c nvidia
conda create -n cu121 python=3.12 pytorch pytorch-cuda=12.1 -c pytorch -c nvidia

12.5 排错

nvidia-smi                                    # 系统驱动版本
conda list | grep -i cuda                     # 环境内 CUDA 版本
python -c "import torch; print(torch.backends.cudnn.version())"

⚠️ 系统驱动版本必须 conda 环境里 CUDA 运行时版本。


13. Jupyter / 数据科学工作流

13.1 标准数据科学环境

# environment.yml
name: ds
channels: [conda-forge]
dependencies:
  - python=3.12
  - numpy
  - pandas
  - polars
  - scipy
  - matplotlib
  - seaborn
  - plotly
  - scikit-learn
  - statsmodels
  - jupyterlab
  - ipykernel
  - ipywidgets
  - pyarrow
  - duckdb
conda env create -f environment.yml
conda activate ds
jupyter lab

13.2 一个 Jupyter,多个环境

在 base 装 JupyterLab,每个项目环境注册自己的内核:

# base 环境装 jupyter
conda activate base
conda install -c conda-forge jupyterlab nb_conda_kernels

# 项目环境只需装 ipykernel
conda activate myproject
conda install -c conda-forge ipykernel
python -m ipykernel install --user --name myproject --display-name "Python (myproject)"

nb_conda_kernels 可让 JupyterLab 自动发现所有 conda 环境作为可用内核。

13.3 R 语言

conda create -n r-env -c conda-forge r-base r-essentials r-irkernel
conda activate r-env
R -e "IRkernel::installspec()"

14. 私有源、企业内网与代理

14.1 自建 conda 频道

把目录 mychannel/<platform>/*.conda 放到任何 HTTP 服务器上:

mychannel/
├── linux-64/
│   ├── repodata.json
│   └── mypkg-0.1-py312_0.conda
├── osx-arm64/
├── win-64/
└── noarch/

生成 repodata.json

conda install -c conda-forge conda-index
conda index mychannel/

使用:

conda install -c http://internal.company.com/mychannel mypkg

14.2 Anaconda Server / 商业仓库

企业方案:Anaconda ServerQuetzJFrog ArtifactorySonatype Nexus

14.3 认证(Token / 用户名密码)

# ~/.condarc
channels:
  - https://user:token@conda.company.com/team/channel

或环境变量:

export CONDA_TOKEN=xxx

14.4 HTTP 代理

~/.condarc

proxy_servers:
  http: http://proxy.company.com:8080
  https: http://proxy.company.com:8080
ssl_verify: true                # 或 false(不安全)/ /path/to/ca.pem

或环境变量:

export HTTPS_PROXY=http://proxy.company.com:8080
export HTTP_PROXY=http://proxy.company.com:8080

14.5 自签证书

ssl_verify: /path/to/corp-ca.pem

14.6 离线/气隙环境

# 在线机器:下载所有包到本地
conda install --download-only -n offline-pack numpy pandas scikit-learn

# 复制 pkgs/ 目录到离线机器
# 或制作完整的 conda 频道:
conda-pack -n myenv -o myenv.tar.gz       # 打包整个环境(推荐)

conda-pack 把环境打成一个可在另一台同平台机器解压即用的压缩包。

mkdir -p /opt/myenv && tar -xzf myenv.tar.gz -C /opt/myenv
source /opt/myenv/bin/activate
conda-unpack                              # 修复内嵌路径

15. 构建与发布 conda 包

15.1 安装构建工具

conda install -n base -c conda-forge conda-build conda-verify

15.2 最小 recipe

mypackage/
├── meta.yaml
├── build.sh        # macOS/Linux
└── bld.bat         # Windows

meta.yaml

package:
  name: mypackage
  version: "0.1.0"

source:
  path: ../

build:
  number: 0
  script: {{ PYTHON }} -m pip install . -vv

requirements:
  host:
    - python >=3.10
    - pip
    - setuptools
  run:
    - python >=3.10
    - numpy >=1.26

test:
  imports:
    - mypackage

about:
  home: https://github.com/me/mypackage
  license: MIT
  summary: My awesome package

15.3 构建

conda build mypackage/ -c conda-forge
conda build mypackage/ --output            # 查看产物路径

15.4 本地安装测试

conda install --use-local mypackage

15.5 发布到 anaconda.org

conda install anaconda-client
anaconda login
anaconda upload /path/to/mypackage-0.1.0-py312_0.conda

15.6 贡献到 conda-forge

通过 staged-recipes 提交 PR;合并后会自动建立独立 feedstock 仓库,后续维护使用 conda-smithy


16. Docker 与 CI 集成

16.1 基于 Miniconda 的 Dockerfile

FROM continuumio/miniconda3:latest

WORKDIR /app
COPY environment.yml .
RUN conda env create -f environment.yml && conda clean -afy

# 让后续 RUN/CMD 默认在 myenv 内执行
SHELL ["conda", "run", "--no-capture-output", "-n", "myenv", "/bin/bash", "-c"]

COPY . .
CMD ["conda", "run", "--no-capture-output", "-n", "myenv", "python", "main.py"]

16.2 micromamba 镜像(更小)

FROM mambaorg/micromamba:1.5

COPY --chown=$MAMBA_USER:$MAMBA_USER environment.yml /tmp/
RUN micromamba install -y -n base -f /tmp/environment.yml && \
    micromamba clean --all --yes

ARG MAMBA_DOCKERFILE_ACTIVATE=1   # 自动激活 base 环境

WORKDIR /app
COPY . .
CMD ["python", "main.py"]

16.3 conda-pack 极致瘦身

多阶段构建:在第一阶段用 conda 装环境并 pack,第二阶段拷贝到 distroless 基础镜像。

FROM continuumio/miniconda3 AS builder
COPY environment.yml .
RUN conda env create -f environment.yml -n myenv && \
    conda install -c conda-forge conda-pack && \
    conda-pack -n myenv -o /tmp/env.tar && \
    mkdir /venv && tar xf /tmp/env.tar -C /venv && \
    /venv/bin/conda-unpack

FROM debian:bookworm-slim
COPY --from=builder /venv /venv
ENV PATH=/venv/bin:$PATH
COPY . /app
WORKDIR /app
CMD ["python", "main.py"]

16.4 GitHub Actions

jobs:
  test:
    runs-on: ubuntu-latest
    defaults:
      run:
        shell: bash -el {0}        # 让 conda activate 生效
    steps:
      - uses: actions/checkout@v4
      - uses: conda-incubator/setup-miniconda@v3
        with:
          miniforge-version: latest
          activate-environment: myenv
          environment-file: environment.yml
          use-mamba: true
      - run: conda info
      - run: pytest

16.5 GitLab CI

default:
  image: condaforge/mambaforge:latest
  before_script:
    - mamba env create -f environment.yml -n myenv
    - source activate myenv

test:
  script:
    - pytest

17. IDE 集成

17.1 VS Code

  1. 安装 Python 扩展。
  2. Ctrl+Shift+PPython: Select Interpreter → 选 ~/miniconda3/envs/myenv/bin/python(Windows 为 Scripts\python.exe)。
  3. .vscode/settings.json
{
  "python.condaPath": "C:\\Users\\me\\miniforge3\\Scripts\\conda.exe",
  "python.defaultInterpreterPath": "C:\\Users\\me\\miniforge3\\envs\\myenv\\python.exe",
  "python.terminal.activateEnvironment": true
}

17.2 PyCharm

Settings → Project → Python Interpreter → Add Interpreter → Conda Environment → 选已有环境或新建。PyCharm 原生支持 conda。

17.3 Cursor / Zed / Neovim

通过 LSP(pyright / basedpyright / pylsp)自动发现解释器;可在项目根放 .python-version 或环境变量 CONDA_DEFAULT_ENV 引导。

17.4 Jupyter(VS Code 内置)

打开 .ipynb → 右上角内核选择器 → 选 conda 环境的 Python 即可。需要环境内安装 ipykernel


18. 迁移指南

18.1 从 Anaconda 迁到 Miniforge(避免商业许可问题)

# 1. 备份现有环境
conda env list
for env in $(conda env list | awk '/^\w/ {print $1}' | grep -v base); do
  conda env export -n $env --from-history > $env.yml
done

# 2. 卸载 Anaconda(删除安装目录 + 清理 ~/.bashrc)

# 3. 安装 Miniforge

# 4. 重建环境
for f in *.yml; do
  conda env create -f $f
done

18.2 从 venv/pip 迁到 conda

pip freeze > requirements.txt
conda create -n myenv python=3.12
conda activate myenv
# 尽量用 conda 装,剩下用 pip
conda install -c conda-forge --file requirements.txt 2>missing.txt
pip install -r missing.txt

18.3 从 conda 迁到 uv(轻量项目)

conda activate myenv
pip freeze > requirements.txt
deactivate

# 新项目
uv init && uv add -r requirements.txt

18.4 conda + uv 混合(推荐 ML 项目)

  • 系统级二进制(CUDA、ffmpeg、GDAL)→ conda
  • 纯 Python 包 → 在 conda 环境里用 uv pip install (飞快)

19. 常见问题与排错

19.1 解析卡死 / "Solving environment" 永远转圈

conda config --set solver libmamba       # 切换到快速解析器
conda update -n base conda
# 或用 mamba
mamba install <pkg>

如果是频道冲突:

conda config --set channel_priority strict

19.2 PackagesNotFoundError

包不在配置的频道里:

conda search -c conda-forge <pkg>
conda install -c conda-forge <pkg>

或退而求其次:

pip install <pkg>

19.3 ImportError / 库不兼容

通常是 conda + pip 混装导致的二进制 ABI 冲突:

conda list                                 # 看 <pip> 标记
conda env remove -n myenv && conda env create -f environment.yml   # 重建

19.4 磁盘占满

conda clean --all                           # 清理缓存(包、tarball、索引)
conda clean --packages                      # 仅清理未使用的包
du -sh ~/miniforge3/pkgs/                   # 查看缓存大小

19.5 base 环境被搞坏

conda install -n base --revision 0          # 回到最初版本
conda list -n base --revisions              # 查看历史

最坏情况:删除 conda 重装,环境数据在 envs/ 下,重装后还能用。

19.6 激活脚本未生效

conda init bash                             # 重新初始化
source ~/.bashrc
# Windows
conda init powershell

19.7 Windows 长路径与中文路径

  • 启用长路径:HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled = 1
  • 安装目录避免空格、中文。

19.8 SSL 证书错误

conda config --set ssl_verify /path/to/corp-ca.pem
# 仅排错时(不安全)
conda config --set ssl_verify false

20. conda vs pip vs uv 对比

维度condapipuv
管理范围Python + 任意二进制库 + 编译器 + CUDA仅 PyPI 上的 Python 包仅 PyPI(含纯 Python 与 wheel)
包格式预编译二进制(.conda)wheel + 源码wheel + 源码
解析速度慢(libmamba 改善后中等)极快
环境管理内置,强需配 venv内置,强
Python 版本管理可装任意 Python不能可装任意 Python
锁文件--explicit / conda-lock(第三方)requirements.txt(无哈希)uv.lock(含哈希,原生)
系统库(OpenSSL, ffmpeg)
CUDA / cuDNN❌(除非装在系统)
企业商业使用Miniforge 免费 / Anaconda 商用受限免费免费
生态广度数据科学/科学计算最全通用 Python 最广通用 Python 最广
跨平台 lockconda-lock 支持不支持原生支持
学习成本中(频道/解析概念多)

选型建议

  • 数据科学 / ML / 含 CUDA / 含 C 扩展密集:conda(Miniforge)+ conda-forge,必要时叠加 uv
  • Web / API / CLI / 库开发:uv
  • 遗留项目维护:pip + venv

21. 命令速查表

21.1 环境

命令用途
conda create -n <env> python=3.12创建命名环境
conda create -p ./venv python=3.12创建 prefix 环境
conda activate <env>激活
conda deactivate退出
conda env list列出所有环境
conda env remove -n <env>删除
conda rename -n old new重命名
conda env export -n <env> > env.yml导出
conda env create -f env.yml从文件创建
conda env update -f env.yml --prune更新并清理

21.2 包

命令用途
conda install <pkg>安装
conda install -c conda-forge <pkg>指定频道安装
conda update <pkg>升级
conda update --all升级全部
conda remove <pkg>卸载
conda list列出已装
conda search <pkg>搜索
conda list --explicit > spec.txt导出精确清单

21.3 频道与配置

命令用途
conda config --show查看所有配置
conda config --add channels conda-forge添加频道
conda config --set channel_priority strict严格优先级
conda config --set solver libmamba切换快速解析器

21.4 维护

命令用途
conda clean --all清理所有缓存
conda update -n base conda升级 conda 自身
conda info查看安装信息
conda list --revisions查看环境变更历史
conda install --revision N回滚环境

21.5 mamba / micromamba

命令用途
mamba install <pkg>与 conda install 等价但更快
mamba env create -f env.yml创建环境
micromamba create -n <env> -f env.yml -y单一二进制版

22. 推荐学习资源


结语:conda 的核心价值在于"管 Python 也管系统",对数据科学与机器学习几乎无可替代。但它解析慢、商业受限、生态偏重学术,纯 Web/CLI 项目不必为它买单。一个务实的现代组合是:Miniforge(开源 conda)→ conda-forge 频道 → libmamba/mamba 提速 → 在环境内用 uv 装纯 Python 包,兼得二进制完备与速度极致。