Conda与Pip使用指南:核心原则与避坑技巧


一、核心原则:conda vs pip 什么时候用?

判断维度 conda(推荐) pip(推荐)
包是否涉及 C/C++ 编译(如 numpy, pandas, pytorch ✅ 是 ❌ 否
是否是 科学计算核心库scipy, matplotlib, seaborn ✅ 是 ❌ 否
是否是 纯 Python 包(无系统依赖) ❌ 否 ✅ 是
是否项目特定(如 flask, requests, selenium ❌ 否 ✅ 是
是否为 多语言/系统级软件R, JDK, CUDA ✅ 是 ❌ 否
是否需要 环境隔离、复现 ✅ 是 ❌ 否
是否要安装 最新版本(非稳定) ❌ 不推荐 ✅ 是

✅ 总结一句话:

优先使用 conda 安装核心依赖、系统库;使用 pip 安装项目包、纯 Python 工具。


二、base 环境的用途与最佳实践

1. base 是什么?

  • Anaconda / Miniconda 默认创建的第一个环境
  • 包含 python, conda, pip, jupyter, ipython 等开发工具。
  • 不是用来装项目代码的,而是环境管理平台

2. ✅ 建议安装到 base 的包

包名 说明
conda 管理器本身
pip 用于安装其他 Python 包
jupyterlab 核心开发工具,启动 jupyter lab
nb_conda_kernels 使 Jupyter 可识别 conda 环境内核
ipython, ipykernel 增强 Jupyter 交互功能
mamba(推荐) 更快的 conda 替代工具
git, make, clang 系统级开发工具

3. ❌ 不推荐安装到 base 的包

包名 原因
numpy, pandas, scipy, matplotlib 核心库,不同项目需不同版本,极易冲突
pytorch, tensorflow 依赖复杂(CUDA, MKL, BLAS),版本不兼容
flask, requests, selenium 项目特定依赖,应独立部署
opencv, torchvision, pyside 有 C++ 编译,版本对齐困难
个人私有库、中间件 项目专用,不应全局安装

原则:base 只装工具,不装项目依赖。


三、如何判断一个包该用 conda 还是 pip

✅ 判断步骤(建议流程):

1. 该包是否是核心科学计算包?
   - 是 → 用 conda 安装(推荐)
   - 否 → 继续

2. 该包是否涉及 C/C++ 编译?
   - 是 → 用 conda 安装(推荐)
   - 否 → 继续

3. 该包是否是纯 Python,且在 PyPI 上?
   - 是 → 用 pip 安装
   - 否 → 检查 conda 是否支持

4. 搜索 conda 仓库:
   - `conda search 包名` 或 `mamba search 包名`
   - 若存在 → 用 `conda install` 安装
   - 若不存在 → 用 `pip install`

5. 是否必须最新版本?
   - 是 → `pip install --pre 包名`
   - 否 → 优先用可用的 conda 版本

✅ 实用命令示例:

# 检查包是否在 conda 中
conda search numpy
mamba search numpy

# 检查包是否在 PyPI
pip show numpy

# 安装(先 conda,后 pip)
conda install numpy
pip install flask jupyterlab

四、混用 pipconda 的风险

风险 原因
🟡 依赖冲突 numpyconda 安装 1.23,pip 升级到 1.24,可能破坏 scipy
🔴 版本混乱 conda listpip list 显示不一致,无法复现环境
🟡 环境不可复现 依赖链不完整,易错
🔴 程序崩溃 numpy.float64 属性缺失等常见错误
🟡 难以维护 不知道谁安装了什么包,排查困难

避免在同一个环境中混用,尤其是核心包!


五、最佳实践流程(推荐方案)

# 1. 创建独立项目环境(避免污染 base)
conda create -n myproject python=3.9

# 2. 激活环境
conda activate myproject

# 3. 安装核心依赖(用 conda)
conda install numpy scipy pandas matplotlib

# 4. 安装项目包(用 pip)
pip install flask requests jupyterlab

# 5. 安装特定依赖(可选)
pip install -r requirements.txt

# 6. 保存环境(可复现)
conda env export > environment.yml

✅ 进阶建议:

  • 使用 mamba 提升速度
    conda install mamba -c conda-forge
    mamba install numpy
    
  • 使用 conda-forge 通道(更活跃):
    conda install -c conda-forge 包名
    

六、常用包推荐安装方式

包名 推荐方式 原因
numpy, pandas, scipy, matplotlib conda 编译复杂,conda 管理更好
seaborn, statsmodels, plotly condapip 可用任一,但 conda 更稳定
pytorch, tensorflow conda(推荐) 自动匹配 CPU/CUDA/版本
flask, fastapi, requests, selenium pip 项目专用,PyPI 上更新快
jupyterlab, nbclassic, jupyter_contrib_nbextensions pipconda pip 为主,conda 为辅
git, make, cmake conda 系统工具包,conda 更可靠
pip, setuptools, wheel, ipython conda 开发工具,应加入 base

七、混用警告提示(记住)

做法 风险等级 建议
conda install numpypip install numpy 🔴 极高 ✅ 禁止!不要覆盖核心包
base 中安装 torch, pandas 🔴 高 ✅ 仅用于工具,不装项目依赖
conda 环境中 pip install 任意包 🟡 中 ✅ 可行,但要控制
base 环境中 pip install 项目包 🟡 中 ✅ 不推荐,易污染全局
使用 pip install 替代 conda 安装 pytorch 🟡 中 ✅ 仅限紧急情况(如变体安装)

重要原则:conda 为“系统管理员”,pip 为“临时工具”,不要让“临时工”乱动系统。


八、我的复盘清单(项目前快速检查)

✔️ 是否创建了独立环境?
✔️ 是否只用 conda 安装了 numpy, pandas, scipy
✔️ 是否只在环境中用 pip 安装 flaskjupyterlab
✔️ 是否避免了在 base 中安装项目依赖包?
✔️ 是否保存了 environment.yml
✔️ 是否使用 conda listpip list 检查版本是否一致?


九、附录:常用命令

# 环境管理
conda create -n envname python=3.9
conda activate envname
conda deactivate
conda env list
conda remove -n envname --all

# 包管理
conda install 包名
conda install -c conda-forge 包名
pip install 包名
pip list
conda list

# 导出/导入
conda env export > environment.yml
conda env create -f environment.yml

# 检查
conda search 包名
mamba search 包名

✅ 最终总结:三句话记住!

  1. conda 是管核心、管系统、管环境的,pip 是管项目、管 Python、管 PyPI 的。
  2. base 是工具区,不是项目区,只装必要开发工具,不装数据包!
  3. 先查 conda search,再用 pip,混用要小心,版本要对齐!
Logo

葡萄城是专业的软件开发技术和低代码平台提供商,聚焦软件开发技术,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务

更多推荐