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 项目运行所需的外部库或模块 。这些依赖通常由 pipPython 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)

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

安装 virtualenv

bash 复制代码
pip install virtualenv

创建环境

bash 复制代码
virtualenv my_env

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


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

pipenv 结合了 pipvenv,自动管理虚拟环境,并创建 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 installconda install` 都是 Python 包管理工具,但它们的工作方式和适用场景不同:

特性 pip install conda install
管理工具 pip (Python 包管理器) conda (Anaconda 包管理器)
包来源 PyPI(Python Package Index) Anaconda 仓库(含 Conda Forge、defaults)
支持的包类型 仅 Python 相关的包 不仅支持 Python 包,还支持 C/C++ 依赖包(如 numpyscipy 等的底层依赖)
依赖管理 仅管理 Python 依赖,需手动解决非 Python 依赖问题 自动管理 Python 和非 Python 依赖
虚拟环境管理 结合 venvvirtualenv 使用 结合 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++ 库,需要额外安装依赖(如 numpyscipy

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 使用建议

  • 如果你使用 AnacondaMiniconda ,建议优先使用 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 等包索引。
  • 适用场景:适合大型或复杂项目,需要严格依赖管理和包发布功能的情况。
相关推荐
PigeonGuan12 小时前
conda 的 envs_dirs 配置出错
conda
Tacy02131 天前
Conda+jupyterlab
python·jupyter·conda·ai编程
阿_星_1 天前
解决pip install 出现error: subprocess-exited-with-error的问题
开发语言·python·pip
Dontla1 天前
uv命令介绍(高性能Python包管理工具,旨在替代pip、pip-tools和virtualenv等传统工具)
python·pip·uv
胡耀超1 天前
linux(ubuntu)中Conda、CUDA安装Xinference报错ERROR: Failed to build (llama-cpp-python)
linux·python·ubuntu·大模型·conda·xinference
称昵写填未1 天前
在Pycharm配置conda虚拟环境的Python解释器
开发语言·ide·python·pycharm·conda·anaconda·虚拟环境
易天法地1 天前
conda、pip、npm、yarn换国内源
conda·pip
Bold!1 天前
vscode远程连接服务器并运行项目里的.ipynb文件 && 如何在 Jupyter Notebook 中切换/使用 conda 虚拟环境?
vscode·jupyter·conda
Мартин.2 天前
[Meachines] [Medium] Canape Git+cPickle-RCE+KTOR扫描+CouchDB+pip权限提升
git·pip·couchdb