pip install和conda install的区别

这里写目录标题

  • [一、什么是 Python 依赖(Python Dependencies)?](#一、什么是 Python 依赖(Python Dependencies)?)
    • [1. 依赖的作用](#1. 依赖的作用)
    • [2. 如何管理 Python 依赖](#2. 如何管理 Python 依赖)
    • [3. 依赖管理问题](#3. 依赖管理问题)
    • [4. 依赖锁定](#4. 依赖锁定)
    • 总结
  • 二、使用pip安装包+venv隔离环境
  • 三、使用Conda进行包安装和环境管理
  • [四、pip install和conda install](#四、pip install和conda install)
    • [4.1 pip install vs conda install](#4.1 pip install vs conda install)
    • [4.2 PyPI和Anaconda 仓库](#4.2 PyPI和Anaconda 仓库)
      • [4.2.1 PyPI(Python Package Index)](#4.2.1 PyPI(Python Package Index))
      • [4.2.2 Anaconda 仓库](#4.2.2 Anaconda 仓库)
        • [(1)defaults 仓库](#(1)defaults 仓库)
        • [(2)Conda Forge](#(2)Conda Forge)
      • [4.2.3 对比 PyPI 和 Anaconda 仓库](#4.2.3 对比 PyPI 和 Anaconda 仓库)
    • [4.3 pip install 和 conda install的安装位置](#4.3 pip install 和 conda install的安装位置)
    • [4.4 如何判断conda中某个包是通过conda还是pip安装的?](#4.4 如何判断conda中某个包是通过conda还是pip安装的?)
    • [4.5 使用建议](#4.5 使用建议)
  • 五、其他包管理工具

一、什么是 Python 依赖(Python Dependencies)?

Python 依赖(dependencies) 指的是 某个 Python 项目运行所需的外部库或模块 。这些依赖通常由 pip 从 Python Package Index(PyPI) 或其他包管理器(如 Conda)下载和安装。


1. 依赖的作用

Python 标准库提供了一些基础功能(如 math, os, sys),但复杂的功能通常依赖 第三方库,如:

  • Web 开发 : Flask, Django
  • 数据科学 : numpy, pandas, matplotlib
  • 机器学习 : scikit-learn, tensorflow, torch
  • 数据库 : SQLAlchemy, PyMySQL

这些库通常不是 Python 内置的,需要额外安装,成为该项目的"依赖"。


2. 如何管理 Python 依赖

(1)安装依赖

bash 复制代码
pip install requests

会安装 requests 及其所有依赖项。

(2)列出已安装的依赖

bash 复制代码
pip list

(3)导出依赖(生成 requirements.txt)

如果希望在其他环境中安装相同的依赖,可以使用:

bash 复制代码
pip freeze > requirements.txt

requirements.txt 示例:

复制代码
numpy==1.24.2
pandas==1.5.3
requests==2.28.2

(4)从 requirements.txt 安装依赖

bash 复制代码
pip install -r requirements.txt

3. 依赖管理问题

(1)版本冲突

  • 项目 A 需要 numpy==1.21.0
  • 项目 B 需要 numpy==1.24.0
  • 如果两个项目共享环境,可能会导致版本冲突。

解决方案:

  • 使用虚拟环境(venv) :

    bash 复制代码
    python -m venv my_env
    source my_env/bin/activate  # Mac/Linux
    my_env\Scripts\activate  # Windows
  • 使用 pipenv :

    bash 复制代码
    pipenv install
    pipenv shell

(2)依赖递归

安装 pandas 可能会自动安装 numpy,因为 pandas 依赖于 numpy。某些库的依赖会影响项目的整体结构。

解决方案:

  • 定期使用 pip list --outdated 检查更新。

  • 使用 pipdeptree 可视化依赖关系:

    bash 复制代码
    pip install pipdeptree
    pipdeptree

4. 依赖锁定

在团队开发或生产环境中,建议使用 依赖锁定 确保环境一致:

  • pip : requirements.txt
  • pipenv : Pipfile.lock
  • poetry : poetry.lock

示例:

bash 复制代码
pip freeze > requirements.txt
pip install -r requirements.txt

总结

方式 用途
pip install package 安装单个依赖
pip list 查看当前环境的依赖
pip freeze > requirements.txt 导出依赖
pip install -r requirements.txt 从 requirements.txt 安装依赖
venv / pipenv 解决版本冲突,管理独立环境

推荐:始终使用虚拟环境来管理 Python 依赖,避免版本冲突!

二、使用pip安装包+venv隔离环境

使用 pip 安装包时,推荐结合 虚拟环境(virtual environment) 来管理 Python 依赖,避免不同项目的包版本冲突。主要方法包括 venv (Python 内置)、virtualenv (更强大)、pipenv(自动管理依赖)。

方法 1:使用 venv(推荐)

venv 是 Python 内置的虚拟环境工具,适用于大多数情况。

创建虚拟环境

bash 复制代码
python -m venv my_env  # 创建名为 my_env 的环境

激活环境

  • Windows(CMD) :

    bash 复制代码
    my_env\Scripts\activate
  • Windows(PowerShell) :

    powershell 复制代码
    my_env\Scripts\Activate.ps1
  • Mac/Linux :

    bash 复制代码
    source my_env/bin/activate

安装包

bash 复制代码
pip install package_name

冻结(导出)环境

bash 复制代码
pip freeze > requirements.txt

可用于在新环境中复现安装:

bash 复制代码
pip install -r requirements.txt

退出环境

bash 复制代码
deactivate

删除环境

bash 复制代码
rm -rf my_env  # Mac/Linux
rd /s /q my_env  # Windows

方法 2:使用 virtualenv(适用于 Python 2)

virtualenv 与 venv 类似,但支持更多 Python 版本,创建的环境更独立。

安装 virtualenv

bash 复制代码
pip install virtualenv

创建环境

bash 复制代码
virtualenv my_env

与 venv 类似的激活、安装、退出操作


方法 3:使用 pipenv(自动管理依赖)

pipenv 结合了 pip 和 venv,自动管理虚拟环境,并创建 Pipfile 追踪依赖。

安装 pipenv

bash 复制代码
pip install pipenv

创建和激活环境

bash 复制代码
pipenv install
pipenv shell

安装包

bash 复制代码
pipenv install package_name

导出依赖

bash 复制代码
pipenv lock

退出环境

bash 复制代码
exit

总结

方式 优点 适用场景
venv Python 内置,简单高效 绝大多数项目
virtualenv 支持 Python 2 和独立环境 需要支持 Python 2 的情况
pipenv 自动管理环境和依赖,安全性更高 复杂项目,依赖管理严格的情况

推荐使用 venv,如果有复杂依赖管理需求可用 pipenv。

三、使用Conda进行包安装和环境管理

Conda是Anaconda中一个强大的包和环境管理工具,可以在Windows的Anaconda Prompt命令行使用,也可以在macOS或者Linux系统的终端窗口(terminal window)的命令行使用。

如何下载及使用Anaconda进行包管理和环境管理,推荐文章:https://blog.csdn.net/chenxy_bwave/article/details/119996001

四、pip install和conda install

4.1 pip install vs conda install

pip install和conda install` 都是 Python 包管理工具,但它们的工作方式和适用场景不同:

特性 pip install conda install
管理工具 pip (Python 包管理器) conda (Anaconda 包管理器)
包来源 PyPI(Python Package Index) Anaconda 仓库(含 Conda Forge、defaults)
支持的包类型 仅 Python 相关的包 不仅支持 Python 包,还支持 C/C++ 依赖包(如 numpy、scipy 等的底层依赖)
依赖管理 仅管理 Python 依赖,需手动解决非 Python 依赖问题 自动管理 Python 和非 Python 依赖
虚拟环境管理 结合 venv 或 virtualenv 使用 结合 conda 环境使用
安装方式 直接安装 .whl 或 .tar.gz 使用预编译的二进制包(更快、更稳定)
速度和兼容性 可能因编译问题导致安装失败 通常安装更快,兼容性更好

4.2 PyPI和Anaconda 仓库

4.2.1 PyPI(Python Package Index)

Python Package Index(PyPI) 是 Python 官方的软件包仓库,类似于软件商店,开发者可以在上面发布 Python 库,用户可以通过 pip install 下载和安装这些库。

  • 官网 : https://pypi.org
  • 安装命令 : pip install package_name
  • 包格式 : .whl(Wheel)或 .tar.gz(源代码)
  • 特点 :
    • 通用性强,支持所有 Python 发行版(CPython、PyPy等)
    • 只包含 Python 相关的包,不提供 C/C++ 依赖项
    • 可能需要编译 ,某些包依赖于 C/C++ 库,需要额外安装依赖(如 numpy、scipy)

4.2.2 Anaconda 仓库

Anaconda 主要面向 数据科学 和 机器学习 ,它的包管理系统 Conda 维护了多个官方和社区仓库,包括defaluts仓库和Conda Forge仓库。

(1)defaults 仓库
  • 由 Anaconda 官方维护,默认包含的包源。预编译好的二进制包,安装速度快,兼容性强
  • 适用于数据科学、机器学习的常见库(如 numpy, pandas, scipy, matplotlib)
  • 安装命令 : conda install package_name
(2)Conda Forge
  • 社区驱动 的 Conda 仓库,包含更多第三方库,维护更新比 defaults 更快,包的种类更多

  • 安装时可以用 -c conda-forge 指定

    bash 复制代码
    conda install -c conda-forge package_name
  • 适用于 defaults 没有的包,或者需要较新版本的包


4.2.3 对比 PyPI 和 Anaconda 仓库

特性 PyPI(pip) Anaconda(conda)
主要用途 通用 Python 库 科学计算、数据分析
包管理工具 pip conda
包来源 PyPI defaults, Conda Forge
依赖管理 仅 Python 依赖 Python + C/C++ 依赖
安装速度 可能较慢,需编译 预编译,通常更快
兼容性 可能出现依赖冲突 依赖管理更完善

使用建议:数据科学/机器学习领域,优先使用 conda install(默认 defaults,如果缺少可以用 conda-forge)

4.3 pip install 和 conda install的安装位置

  • 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.4 如何判断conda中某个包是通过conda还是pip安装的?

执行​ conda list ,用pip安装的包显示的build项目为pypi。如下图所示:

4.5 使用建议

  • 如果你使用 Anaconda 或 Miniconda ,建议优先使用 conda install,特别是涉及 数据科学 、机器学习 或 科学计算 (如 numpy, pandas, tensorflow)。
  • 如果包 仅在 PyPI 可用 或 使用标准 Python 生态 ,可以用 pip install。
  • 也可以 混合使用 :
    1. 先用 conda install 安装基础环境 (如 numpy, scipy, matplotlib)。
    2. 再用 pip install 安装 Conda 仓库中没有的包。

示例

bash 复制代码
conda create -n my_env python=3.9
conda activate my_env
conda install numpy pandas
pip install some_package_not_in_conda

这样可以兼顾 conda 的稳定性和 pip 的灵活性。

五、其他包管理工具

uv

是一个高性能的 Python 包管理工具,旨在替代 pip,提供更快的包安装速度。

poetry

poetry 是一个现代化的 Python 包管理和构建工具,集成了依赖管理、虚拟环境管理和包发布功能。特点如下:

  • 功能:集成依赖管理、虚拟环境管理和包发布。
  • 依赖管理:使用 pyproject.toml 和 poetry.lock 文件记录依赖,自动解析并安装所需库。
  • 环境管理:自动为每个项目创建和管理虚拟环境,确保项目独立性。
  • 包发布:简化包的构建和发布流程,支持发布到 PyPI 等包索引。
  • 适用场景:适合大型或复杂项目,需要严格依赖管理和包发布功能的情况。
相关推荐
emo_2b2 天前
Pycharm配置conda解释器时遇到的问题及解决方法
linux·pycharm·conda
Είναι η κοπέλα4 天前
llama.cpp 与 GGUF 格式:本地大模型的“裸引擎“
开发语言·人工智能·pytorch·python·conda
Είναι η κοπέλα5 天前
显存计算与模型选择:你的显卡能跑多大的模型
人工智能·pytorch·python·开源·conda
Escalating_xu5 天前
【Python】使用库:标准库、第三方库、pip、项目实战与程序打包
java·python·pip
天蓝蓝的本我5 天前
conda日常用到的命令积累1-登录linux,安装pycharm
linux·pycharm·conda
青春不朽5127 天前
pip 安装慢、超时、报错?一份国内源配置 + 9 个高频报错对照表
pip
Είναι η κοπέλα8 天前
Python 虚拟环境:venv、conda 与 Python 版本选择全解
开发语言·python·conda
ysu_03149 天前
uv实战指南-从Python版本虚拟环境到pyproject依赖管理
开发语言·python·pip·uv·虚拟环境·包管理·依赖管理
夏天拐跑了西瓜10 天前
一文入门LangChain:从框架认知到构建你的第一个AI Agent
python·langchain·conda·agent