鱼香rose'Blog

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 installpip 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 环境中,用户可 自由选择 condapip,但需注意潜在冲突(后文会详细说明)。

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.20pip install tensorflow,若 tensorflow 依赖 numpy>=1.21pip 可能强制升级 numpy,导致 conda 环境不稳定。

解决方案

  • 使用 conda listpip 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,二者的共存是为了兼顾灵活性与生态兼容性,但需遵循以下原则:

  1. 优先使用 conda:确保依赖完整性和环境稳定性。
  2. 必要时用 pip:补充 conda 未覆盖的包(有些库包只存在 pypi 这个 python 官方仓库中, 只能通过 pip 来安装),但需严格检查版本冲突。
  3. 避免混用:减少依赖树混乱,遇到问题及时重建环境。

合理利用两者,可以最大程度发挥 Anaconda 在数据科学和复杂项目管理中的优势!

posted @ 2026-02-26 22:02  鱼香_rose  阅读(6)  评论(0)    收藏  举报