conda
venv + pip 只能管理 Python 包,一旦项目依赖 NumPy、PyTorch 这类背后绑定了 C/C++/CUDA 等非 Python 二进制库的科学计算包,纯 pip 安装经常会遇到编译失败、系统库版本不匹配等问题。conda 是跨语言的包与环境管理器,既能管理 Python 版本本身,也能管理这些底层二进制依赖,是数据科学和机器学习领域的事实标准。
安装
conda 有两种常见发行版:
- Anaconda:包含数百个预装的数据科学包,体积大(数 GB),适合新手一次装全。
- Miniconda / Miniforge:只包含 conda 本身和少量基础包,体积小,按需安装,推荐用于服务器和生产环境。Miniforge 默认使用社区维护的 conda-forge 渠道,许可更宽松。
# 以 Miniforge 为例(Linux/macOS),下载后静默安装
bash Miniforge3-$(uname)-$(uname -m).sh -b
# 安装完成后初始化 shell
conda init bash # 或 zsh / fish 等创建与管理环境
# 创建一个指定 Python 版本的环境,并预装若干包
conda create --name myenv python=3.12 numpy pandas
# 激活 / 退出环境
conda activate myenv
conda deactivate
# 查看所有环境
conda env list
# 在已有环境中安装包(默认从 defaults 渠道)
conda install --name myenv matplotlib
# 从指定渠道安装(conda-forge 社区维护,包更新更快、更全)
conda install conda-forge::numpy
# 删除环境
conda env remove --name myenv环境的导出与复现
# 导出当前激活环境的完整依赖到 YAML 文件
conda export > environment.yaml
# 在另一台机器上根据该文件重建环境
conda env create -f environment.yamlenvironment.yaml 和 requirements.txt 的作用类似,但能同时描述 Python 版本、conda 包和 pip 包,适合团队共享包含二进制依赖的复杂环境。
小结
conda 的核心优势是能管理非 Python 的二进制依赖(CUDA、MKL、编译好的科学计算库等),代价是环境体积更大、依赖求解速度通常比 pip/uv 慢。日常 Web 开发、纯 Python 项目没有必要引入 conda;但涉及深度学习、需要 GPU 加速库或复杂 C 扩展的项目,conda(或 Miniforge)仍然是更省心的选择。
最后更新于