conda 是由 Anaconda 公司维护的跨语言、跨平台包与环境管理器。它不仅能管理 Python 包,还能管理编译器(gcc/clang)、CUDA、R、Julia、二进制库(OpenSSL、ffmpeg、HDF5 等),是数据科学与机器学习领域事实上的标准工具。
目录
- 简介与生态
- 发行版选择(Miniconda / Anaconda / Miniforge / Mambaforge)
- 安装与升级
- 核心概念
- 环境管理
- 包管理
- 频道(Channel)与 conda-forge
- environment.yml 与项目化
- conda 与 pip 协同
- mamba / micromamba 加速
- 国内镜像加速
- GPU / CUDA 工作流
- Jupyter / 数据科学工作流
- 私有源、企业内网与代理
- 构建与发布 conda 包
- Docker 与 CI 集成
- IDE 集成
- 迁移指南
- 常见问题与排错
- conda vs pip vs uv 对比
- 命令速查表
- 推荐学习资源
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 | 生物信息学专用频道 |
| mamba | C++ 重写的 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 GB | defaults | 教学、快速上手、不在意磁盘 |
| Miniconda | ~80 MB | defaults | 想自己控制装哪些包 |
| Miniforge ⭐ | ~80 MB | conda-forge | 推荐:默认开源、商业可用 |
| Mambaforge(已并入 Miniforge) | ~80 MB | conda-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— 生物信息pytorch、nvidia、huggingface— 厂商频道
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 | 生物信息 |
pytorch | PyTorch 官方 |
nvidia | CUDA / cuDNN / NCCL |
huggingface | Transformers 等 |
pyviz / holoviz | 可视化 |
numba | numba / 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 Server、Quetz、JFrog Artifactory、Sonatype 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
- 安装 Python 扩展。
Ctrl+Shift+P→Python: Select Interpreter→ 选~/miniconda3/envs/myenv/bin/python(Windows 为Scripts\python.exe)。.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 对比
| 维度 | conda | pip | uv |
|---|---|---|---|
| 管理范围 | 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 最广 |
| 跨平台 lock | conda-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 官方文档:docs.conda.io/
- conda-forge:conda-forge.org/
- Miniforge:github.com/conda-forge…
- mamba:mamba.readthedocs.io/
- conda-lock:github.com/conda/conda…
- conda-pack:conda.github.io/conda-pack/
- conda-build:docs.conda.io/projects/co…
- Anaconda 商业政策说明:www.anaconda.com/blog/anacon…
- 清华源使用帮助:mirrors.tuna.tsinghua.edu.cn/help/anacon…
结语:conda 的核心价值在于"管 Python 也管系统",对数据科学与机器学习几乎无可替代。但它解析慢、商业受限、生态偏重学术,纯 Web/CLI 项目不必为它买单。一个务实的现代组合是:Miniforge(开源 conda)→ conda-forge 频道 → libmamba/mamba 提速 → 在环境内用 uv 装纯 Python 包,兼得二进制完备与速度极致。