Conda环境使用教程
Technology
下面是一份面向初中高级用户的 Conda 与 Python(含 AI 常见需求)环境使用教程。内容涵盖安装、基础概念、环境与包管理、与 pip 的关系、常见陷阱、跨平台实践、加速镜像、复现与部署、以及在数据科学/深度学习中的实践范式。
目录
-
- Conda 是什么?Miniconda vs Anaconda vs Mambaforge
-
- 安装与基础配置
-
- Conda 核心概念与命令速查
-
- 创建与管理环境(含 Python/CUDA/多版本)
-
- 包管理(conda/pip 混用策略)
-
- 镜像加速(清华/中科大等)
-
- 环境复现与可移植性(env YAML、锁定、打包)
-
- 与 Jupyter/VS Code/PyCharm 集成
-
- AI/数据科学常用实践(PyTorch/TF/CUDA/cuDNN)
-
- 常见问题与排错
-
- 跨平台与多架构注意事项
-
- 最佳实践清单
1. Conda 是什么?Miniconda vs Anaconda vs Mambaforge
- Conda:跨语言(Python、R、C/Fortran 库等)包与环境管理器,可在用户目录无管理员权限下工作。
- Miniconda:精简版 Conda,只含 conda 与最小依赖,推荐大多数开发者使用。
- Anaconda:带大量预装科学计算包(体积大、更新慢),适合教学或离线环境。
- Mambaforge(或 Miniforge):社区维护的轻量发行,默认使用更快的 mamba 解析器与 conda-forge 通道,解析速度快,生态齐全。强烈推荐。
- mamba:conda 的高速替代前端,命令几乎兼容(mamba install ...)。
2. 安装与基础配置
- 推荐:Mambaforge(含 mamba、conda、conda-forge 通道)
- 访问官方发行页面下载对应平台安装器(Windows/macOS/Linux,x86_64/arm64)。
- 安装时勾选/选择:
- 将 conda 初始化到你的 shell(bash/zsh/powershell)。
- 不要“将 Python 加入系统 PATH”(交给 shell init 管理即可)。
- 初始化/更新
- 初始化 shell:conda init zsh 或 conda init powershell
- 更新管理器:conda update -n base conda 或 mamba update -n base conda
- 基本设置(建议)
- 自动同意提示:conda config --set always_yes yes
- 显示下载进度:conda config --set show_channel_urls yes
- 优先级策略:conda config --set channel_priority flexible
- 添加 conda-forge 并设为最高优先级(若非 Mambaforge):conda config --add channels conda-forge; conda config --set channel_priority strict
3. Conda 核心概念与命令速查
- 核心概念
- 环境(env):一个自包含的目录,含特定版本的 Python/包,互不干扰。
- 通道(channel):包源(默认 defaults;社区主流 conda-forge)。
- 解析与求解器:决定安装哪些兼容版本(mamba 更快)。
- 常用命令
- 查看信息:conda info; conda config --show
- 列出环境:conda env list
- 创建环境:conda create -n myenv python=3.10
- 激活/退出:conda activate myenv; conda deactivate
- 安装包:conda install numpy; mamba install pytorch -c pytorch
- 搜索包:conda search pandas
- 更新包:conda update numpy
- 删除包:conda remove numpy
- 删除环境:conda env remove -n myenv
- 导出/导入:conda env export -n myenv > env.yml; conda env create -f env.yml
4. 创建与管理环境(含 Python/CUDA/多版本)
- 指定 Python 版本
- conda create -n py310 python=3.10
- 同时指定关键库:conda create -n ds python=3.10 numpy pandas scipy jupyterlab
- 克隆环境
- conda create -n newenv --clone oldenv
- 多版本并存
- 不同 env 可装不同 Python/库,不建议在同一 env 内来回切换大版本。
- CUDA/cuDNN 管理(以 PyTorch 为例)
- 若使用 conda-forge:mamba install pytorch torchvision pytorch-cuda=12.1 -c pytorch -c nvidia
- CPU 版:mamba install pytorch torchvision cpuonly -c pytorch
- TensorFlow 通常推荐 pip 二进制(官方轮子),但依赖可用 conda 管理:mamba install cudnn cudatoolkit
- 固定版本以便复现
- conda create -n proj python=3.10 "numpy=1.26.*" "pandas>=2.1,<2.3"
5. 包管理(conda/pip 混用策略)
- 原则顺序:能用 conda 装的先用 conda(尤其含 C/C++ 依赖的科学计算包);conda 没有的再用 pip。
- 避免在 base 环境开发。每个项目一个环境。
- 混用注意事项
- 始终先 conda 后 pip。因为 pip 不参与 conda 依赖求解,先 pip 可能破坏依赖图。
- 尽量统一 channel,优先 conda-forge。
- 安装完 pip 包后,避免再用 conda 修改同一环境的大型依赖。
- 示例流程
- mamba create -n proj python=3.11
- conda activate proj
- mamba install pytorch torchvision pytorch-cuda=12.1 -c pytorch -c nvidia
- pip install transformers datasets accelerate
- 查看来源
- conda list --show-channel-urls
- pip show package_name
6. 镜像加速(清华/中科大等)
- conda-forge/默认通道镜像配置示例(以清华为例)
- conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
- conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
- conda config --set show_channel_urls yes
- 推荐 channel_priority strict 或 flexible,根据实际冲突调整。
- pip 镜像
- 临时:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple somepkg
- 永久(pip.ini/pip.conf):index-url = https://pypi.tuna.tsinghua.edu.cn/simple
- 注:镜像同步存在延迟,如遇“找不到版本”,可暂时切回官方源。
7. 环境复现与可移植性(env YAML、锁定、打包)
- 导出环境
- conda env export -n proj > environment.yml
- 更可控的导出(排除显式平台构件):conda env export --from-history > env-min.yml
- 从文件创建
- conda env create -f environment.yml
- 锁定依赖版本(跨平台注意)
- 使用 conda-lock 生成平台特定的锁文件:conda-lock -f environment.yml -p win-64 -p linux-64 -p osx-arm64
- 安装:conda-lock install -n proj conda-lock.yml
- 打包/分发
- conda-pack 可将环境打包为可移动档(尤其 HPC/无网环境):conda install -n base -c conda-forge conda-pack; conda-pack -n proj -o proj.tar.gz
8. 与 Jupyter/VS Code/PyCharm 集成
- Jupyter
- 安装:mamba install jupyterlab ipykernel
- 将环境暴露为内核:python -m ipykernel install --user --name proj --display-name "Python (proj)"
- VS Code
- 安装 Python 扩展,选择解释器时选对应 conda env 的 python 可执行文件。
- 在 devcontainer/remote 场景,用 environment.yml 自动构建环境。
- PyCharm
- Settings -> Project -> Python Interpreter -> Add -> Conda Environment -> Existing 或 New。
- 终端集成
- 确保 shell 已 conda init;Windows PowerShell 建议安装 Terminal-Icons 并使用 Conda Powerline 提示。
- AI/数据科学常用实践
- PyTorch
- NVIDIA GPU(新驱动,CUDA 12.x 示例):
- mamba create -n torch python=3.10
- conda activate torch
- mamba install pytorch torchvision pytorch-cuda=12.1 -c pytorch -c nvidia
- python -c "import torch;print(torch.version, torch.cuda.is_available(), torch.version.cuda)"
- CPU 版:mamba install pytorch torchvision cpuonly -c pytorch
- NVIDIA GPU(新驱动,CUDA 12.x 示例):
- TensorFlow
- 推荐 pip 安装官方轮子(GPU 版绑定特定 CUDA/cuDNN):
- mamba create -n tf python=3.10
- conda activate tf
- pip install tensorflow
- python -c "import tensorflow as tf;print(tf.version, tf.config.list_physical_devices('GPU'))"
- 推荐 pip 安装官方轮子(GPU 版绑定特定 CUDA/cuDNN):
- 科学计算常用
- mamba install numpy pandas scipy scikit-learn matplotlib seaborn jupyterlab
- NLP/大模型工具
- pip install transformers accelerate datasets sentencepiece bitsandbytes
- 注意 bitsandbytes 对 CUDA/架构的兼容性,必要时改用 CPU 或使用预编译轮子。
- CUDA 工具链
- 尽量使用 conda 提供的 cudatoolkit 与 cudnn,与驱动解耦;若使用系统 CUDA,需要匹配版本。
- 检查 GPU:nvidia-smi(系统层面),python -c "import torch; print(torch.version.cuda)"(框架层面)。
10. 常见问题与排错
- 求解速度慢/卡住
- 用 mamba 替代 conda;减少通道;启用 strict channel priority;升级到最新版本。
- 包冲突
- 观察冲突信息,固定关键包版本或降低要求;尝试从历史导出创建;分拆到多个环境。
- 环境被 pip 破坏
- 原则:先 conda 后 pip,pip 装完不要再 conda 大改;必要时新建环境。
- “找不到包/版本”
- 检查 channels;尝试 conda-forge;检查 Python 版本是否过新/过旧;更换镜像或回官方源。
- Windows 下编译失败
- 尽量使用 conda 预编译包;安装 Visual Studio Build Tools;或转用 WSL2 + mamba。
- Jupyter 内核不见了
- 在目标 env 里安装 ipykernel 并注册;或重装 JupyterLab。
- CUDA 不可用
- 检查驱动版本 ≥ CUDA runtime 要求;使用框架官方推荐命令安装;避免混用系统 CUDA 与 conda CUDA。
11. 跨平台与多架构注意事项
- macOS Apple Silicon(arm64)
- 建议安装 arm64 版本的 Mambaforge;优先 conda-forge;部分包可能仅提供 cpu 版或使用 Metal 后端(如 torch-mps)。
- 可通过 miniforge + rosetta(x86_64)获得更广包源,但性能下降。
- Windows
- 尽量避免在 base 环境安装开发包;重启终端后 conda 激活才生效;GPU 计算更稳定建议用 WSL2。
- Linux
- 系统包与 conda 包混用要谨慎(如 apt 与 conda 的 OpenSSL、zlib);容器/集群可配合 conda-pack 或 micromamba。
- 多 Python 版本
- 新项目优先用 LTS/主流版本(2025 年常用 3.10/3.11/3.12);老项目保持原版本。
12. 最佳实践清单
- 每个项目独立环境,不在 base 开发。
- 首选 mamba + conda-forge,严格通道优先级。
- 先 conda 安装依赖,再 pip 安装 conda 没有的包。
- 使用 environment.yml 或 conda-lock 保证可复现。
- 对重要环境用 conda-pack 备份。
- 定期更新但避免“强迫升级”,生产环境锁版本。
- GPU 框架按官方指令安装匹配的 CUDA/cuDNN。
- 在 CI/容器/集群中使用 micromamba 加速构建。
示例:从零到可运行 PyTorch GPU 的环境
- 安装 Mambaforge,并初始化 shell
- 创建环境并安装:
- mamba create -n torch python=3.10
- conda activate torch
- mamba install pytorch torchvision pytorch-cuda=12.1 -c pytorch -c nvidia
- 验证:
- python - <<'PY'
import torch,sys
print("Torch:", torch.version)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("Device:", torch.cuda.get_device_name(0))
PY
- python - <<'PY'