Conda 如何管理 `conda` 和 `pip` 安装的软件
Conda 如何管理 conda 和 pip 安装的软件?
在 conda 环境中,你既可以使用 conda install 安装软件,也可以使用 pip install 安装软件。conda 会同时管理这两种不同的安装方式,并且它们的行为存在一些重要区别。
1. conda list 是否显示 pip 安装的软件?
是的,conda list 可以 显示使用 pip install 安装的软件。
当你在 conda 环境中使用 pip 安装软件后,pip 安装的软件会出现在 conda list 的列表中,并且会被标注为 pypi 来源。
示例
-
在
conda环境中安装numpy和scipy:conda install numpy pip install scipy -
运行
conda list:conda list示例输出:
# packages in environment at C:\Users\User\miniconda3\envs\myenv: # numpy 1.21.2 py39h7a5dc32_0 pip 21.2.4 py39haa95532_0 scipy 1.7.1 pypi_0 pypi # <--- pip 安装的numpy是用conda安装的,来源是conda-forge或default频道。scipy是用pip安装的,来源是pypi,所以conda list会标注它来自pypi。
2. conda 如何管理 pip 安装的软件?
conda 本身不会直接管理 pip 安装的软件,但 pip 安装的软件会安装到 conda 环境的 site-packages 目录下,因此 conda list 仍然可以检测到它们。
两者的主要区别
| 特性 | Conda 安装 | Pip 安装 |
|---|---|---|
| 源 | Conda 仓库 (conda-forge, defaults) |
PyPI (pypi.org) |
| 依赖管理 | 自动解决依赖冲突 | 可能引发依赖冲突 |
| 安装位置 | Conda 环境的 pkgs/ 目录 |
Conda 环境的 site-packages/ 目录 |
| 管理工具 | conda list, conda remove |
pip list, pip uninstall |
3. pip 安装的软件是否可以用 conda remove 卸载?
不可以! conda remove package_name 只能卸载 conda 安装的软件,如果你用 pip 安装了软件,必须使用:
pip uninstall package_name
4. 在 conda 环境中,推荐使用 conda 还是 pip?
推荐优先使用 conda
- 原因:
conda可以更好地管理依赖,避免版本冲突。 - 例如,如果你想安装
scipy,最好用:
而不是:conda install scipypip install scipy
什么时候使用 pip?
- 如果
conda没有某个软件,比如transformers,可以使用pip:pip install transformers - 某些 Python 轮子(wheels)只在 PyPI 上有,比如某些深度学习库。
最佳实践:先 conda,后 pip
建议的安装顺序:
- 先安装
conda可用的软件:conda install numpy scipy matplotlib - 再安装
pip需要的软件:pip install somepackage
⚠️ 注意:在
conda环境中使用pip install可能会破坏conda的依赖管理。如果用pip安装后发现问题,可以运行:
conda install --force-reinstall -n myenv conda
或者重新创建环境:
conda remove -n myenv --all
conda create -n myenv python=3.9
总结
conda list可以显示pip安装的软件,但会标注为pypi。conda remove不能卸载pip安装的软件,需要用pip uninstall。- 优先使用
conda install,如果conda找不到软件,再用pip install。 - 使用
conda install避免依赖冲突,避免pip破坏conda的环境。

浙公网安备 33010602011771号