conda学习笔记
\(\Huge{conda学习笔记}\)
什么是 conda?
Conda 是一个强大的跨平台包管理和环境管理工具,最初为 Python 设计,但也支持其他语言(如 R、C/C++、Java)。它的主要功能是帮助用户创建独立的虚拟环境并管理依赖包,从而解决不同项目之间的版本冲突问题。
1. 核心功能
- 环境管理:Conda 可以创建隔离的虚拟环境,每个环境包含特定版本的 Python 和依赖包,互不干扰。例如:
conda create --name myenv python=3.9 numpy pandas
conda activate myenv # 激活环境
conda deactivate # 退出环境
conda env list # 查看所有环境
conda env remove --name myenv # 删除环境
- 包管理:Conda 支持安装、更新和卸载包,且能自动处理依赖关系。例如:
conda install numpy # 安装包
conda install -c conda-forge scipy # 从指定仓库安装
conda update numpy # 更新包
conda remove numpy # 卸载包
-
依赖冲突解决:Conda 能自动处理库之间的版本兼容性,避免手动解决依赖问题。
-
跨平台支持:Conda 支持 Windows、macOS 和 Linux,确保不同系统下的环境一致性。
-
预编译二进制包:Conda 提供预编译的科学计算库(如 NumPy、Pandas、TensorFlow),无需手动编译,安装速度快且稳定。
2. 使用场景
- 多版本 Python 管理:在同一台机器上运行不同版本的 Python(如 3.8 和 3.10)。
- 科学计算和数据分析:快速搭建数据科学环境,适合机器学习和深度学习项目。
- 跨语言依赖管理:支持安装非 Python 包(如 R 和 C++ 库)。
3. Conda 的发行版
- Anaconda:包含 Python 和 1500+ 科学计算包,适合开箱即用。
- Miniconda:轻量级版本,仅包含 Conda 和 Python,用户可按需安装其他包。
4. 注意事项
- 优先使用 Conda 安装包:在同一环境中,尽量先用
conda install,再用pip,以避免依赖冲突。 - 镜像加速:通过配置国内镜像(如清华源)提升下载速度。
- 环境导出:使用
conda env export > environment.yml导出环境配置,便于团队协作。
Conda 是管理复杂项目环境的理想工具,尤其适合需要多版本、多依赖和跨平台协作的场景。
5. conda 常用命令
conda create -n env_name python=3.x # 创建新的python环境
conda env list # 查看已有的python环境
conda activate env_name # 进入已有的python环境
conda deactivate # 退出当前的python环境
conda remove -n env_name --all # 删除conda环境
pip install -r requirements.txt # 根据requirements.txt的内容安装所需的包
pip install package_name # 安装包
pip install ............... --timeout 6000
pip 换清华源后缀:
-i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple --trusted-host=https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
conda install 与 pip install 的区别
(44 条消息) 请问大神们,pip install 和 conda install 有什么区别吗? - 知乎
在 Anaconda 环境中,默认会同时包含 conda 和 pip 两个库包管理工具。
1. 为什么 Anaconda 同时包含 conda 和 pip?
兼容性需求
虽然 conda 是 Anaconda 等基于 conda 的发行版的核心工具,但某些 Python 的库包可能仅存在于 PyPI(Python 官方包仓库),未提供 conda 版本。此时仍需 pip 工具作为补充来安装三方库。
例如:小众库或尚未适配 conda 的新兴工具可能只能通过 pip 安装。
用户习惯
许多开发者熟悉 pip,因此 Anaconda 保留 pip 可降低迁移成本。
灵活性
在 conda 环境中,用户可 自由选择 conda 或 pip,但需注意潜在冲突(后文会详细说明)。
2. 如何确认 conda 环境中是否包含 pip?
方法 1
在终端中激活 conda 环境后,运行以下命令:
conda list | grep pip
若输出中包含 pip,则表示已安装(Windows 用户可省略 grep,直接查看列表)。
方法 2
运行 pip --version,若显示路径指向 conda 环境的目录(如 ~/anaconda3/envs/my_env/bin/pip),则说明 pip 属于当前环境。
3. 在 conda 环境中使用 pip 的注意事项
(1) 优先使用 conda 安装包
原因:
conda能管理非 Python 依赖(如 C/C++ 库),而pip仅处理 Python 包。- 通过
conda安装的包会经过兼容性验证,减少环境冲突风险。
示例:安装 numpy
conda install numpy # 推荐,自动处理底层依赖(如 MKL 加速库)
(2) 谨慎使用 pip
适用场景:
- 当某个包 未提供 conda 版本(如
transformers的某些早期版本)。 - 需要安装 开发版或特定分支 的包(如 GitHub 直接拉取的代码)。
操作建议:
先尝试通过 conda 安装:
conda search <package_name> # 检查是否存在 conda 版本
若无 conda 版本,再使用 pip:
pip install <package_name>
安装后运行以下命令,修复可能的依赖冲突:
conda update --all # 尝试让 conda 协调环境
(3) 避免混用 conda 和 pip 安装同一包
风险:
若先用 conda 安装包 A,再用 pip 安装包 B(依赖 A 的不同版本),可能导致 A 被降级或升级,破坏 conda 的依赖树。
例如:conda install numpy==1.20 → pip install tensorflow,若 tensorflow 依赖 numpy>=1.21,pip 可能强制升级 numpy,导致 conda 环境不稳定。
解决方案:
- 使用
conda list和pip list定期检查包版本。 - 若已混用导致问题,可尝试重建环境:
conda remove --name my_env --all # 删除环境
conda create --name my_env python=3.9 # 重新创建
(4) conda与pip在安装路径上的区别
conda install xxx:这种方式安装的库都会放在anaconda3/pkgs目录下,这样的好处就是,当在某个环境下已经下载好了某个库,再在另一个环境中还需要这个库时,就可以直接从pkgs目录下将该库复制至新环境而不用重复下载。pip install xxx:分两种情况,一种情况就是当前conda环境的python是conda安装的,和系统的不一样,那么xxx会被安装到anaconda3/envs/current_env/lib/python3.x/site-packages文件夹中,如果当前conda环境用的是系统的python,那么xxx会通常会被安装到~/.local/lib/python3.x/site-packages文件夹中
4. 为什么 conda 环境中已有 pip,仍需谨慎使用?
依赖隔离性
conda 会严格跟踪其安装的所有包及其依赖关系,但 无法追踪 pip 安装的包。
当 pip 修改了某个共享依赖的版本时,conda 可能无法感知,导致环境出现“隐形”冲突。
二进制兼容性
conda 的预编译包可能依赖特定版本的底层库(如 OpenSSL、CUDA),而 pip 安装的包可能与之不兼容。
例如:通过 pip 安装的 tensorflow 可能与 conda 安装的 CUDA 驱动版本不匹配。
5. 最佳实践总结
| 场景 | 推荐工具 | 操作示例 | 备注 |
|---|---|---|---|
| 安装常见科学计算库 | conda | conda install numpy pandas |
自动处理非 Python 依赖 |
| 安装仅 PyPI 中有的包 | pip | pip install some_package |
安装后运行 conda update --all |
| 创建新环境 | conda | conda create --name my_env python=3.9 |
创建纯净环境 |
| 卸载包 | conda | conda remove package_name |
避免残留 pip 安装的依赖 |
6. 总结
Anaconda 默认同时提供 conda 和 pip,二者的共存是为了兼顾灵活性与生态兼容性,但需遵循以下原则:
- 优先使用 conda:确保依赖完整性和环境稳定性。
- 必要时用 pip:补充 conda 未覆盖的包(有些库包只存在 pypi 这个 python 官方仓库中, 只能通过 pip 来安装),但需严格检查版本冲突。
- 避免混用:减少依赖树混乱,遇到问题及时重建环境。
合理利用两者,可以最大程度发挥 Anaconda 在数据科学和复杂项目管理中的优势!

浙公网安备 33010602011771号