跳过正文
Background Image
  1. Posts/

初步了解 PyPA(Python Packaging Authority)下的知名项目和关系

·1391 字·3 分钟· ·
沈显鹏
作者
沈显鹏
目录

PyPA(Python Packaging Authority)是管理和维护 Python 包相关工具的一个社区组织。PyPA 管理的知名项目包括 pip、packaging、setuptools、wheel、twine、build 等等。了解这些项目的关于有助于我们更好的了解 Python 的生态系统。

以下是这些项目的介绍以及它们之间的关系:

  1. pip

作用:pip 是 Python 的包管理工具,用于安装和管理 Python 库和依赖项。通过 pip,用户可以从 Python Package Index (PyPI) 或其他包源下载并安装所需的 Python 包。 关系:pip 依赖于 setuptools 和 wheel 来处理包的构建和安装。它是最常用的 Python 包管理工具,也是官方推荐的包安装方法。

  1. setuptools

作用:setuptools 是一个用于打包 Python 项目的工具,可以创建分发包(distribution packages)并发布到 PyPI。它扩展了 Python 标准库中的 distutils,提供了更多功能,如依赖管理、插件系统等。 关系:setuptools 是创建 Python 包时常用的工具,pip 使用 setuptools 来安装源代码形式的 Python 包。setuptools 生成的分发包通常是 .tar.gz 或 .zip 文件格式。

  1. packaging

作用:packaging 提供了用于与 Python 包打包和分发相关的核心实用工具和标准实现。它实现了一些与包版本、依赖关系解析等有关的 PEP(Python Enhancement Proposals)。 关系:packaging 是 setuptools 和 pip 等工具的底层依赖,用于处理包的版本比较、依赖解析等低层次操作。

  1. wheel

作用:wheel 是一种 Python 包的打包格式,作为 setuptools 打包格式 .egg 的替代方案。它是目前推荐的发布格式,可以避免编译步骤,安装速度更快。 关系:pip 优先安装 wheel 格式的包,因为它可以直接安装,而不需要像 .tar.gz 那样进行编译。setuptools 可以生成 wheel 格式的包。

  1. virtualenv

作用:virtualenv 用于创建独立的 Python 环境,可以避免不同项目之间的包依赖冲突。每个虚拟环境都有自己独立的 Python 可执行文件和库集合。 关系:pip 被用于管理 virtualenv 中的包。virtualenv 是创建隔离环境的工具,但近年来 Python 标准库中的 venv 模块也能提供类似功能。

  1. twine

作用:twine 是用于将 Python 包上传到 PyPI 的工具。与 setuptools 的 python setup.py upload 方法不同,twine 更加安全,支持上传 wheel 文件和 .tar.gz 文件。 关系:twine 通常与 setuptools 或 wheel 一起使用,负责将构建好的包上传到 PyPI。

  1. build

作用:build 是一个简单的命令行工具,用于构建 Python 项目。它可以使用 PEP 517 接口构建包,而不依赖于 setuptools。 关系:build 提供了比 setuptools 更简洁的构建方式,但它依赖于 setuptools 或其他构建后端(如 flit、poetry)来实际完成构建过程。

  1. pyproject.toml

作用:pyproject.toml 不是一个工具,而是一种配置文件格式。它被用来描述项目的构建需求,并支持使用不同的构建后端,如 setuptools、flit、poetry 等。 关系:pip 和 build 等工具会读取 pyproject.toml 文件,了解如何构建和安装项目。

他们之间的关系总结
#

  • pip 作为包管理工具,与所有这些项目都有交互关系,尤其依赖 setuptools 和 wheel 来安装包。
  • setuptools 负责包的创建和打包,并使用 packaging 处理版本和依赖。
  • wheel 是打包格式,pip 更倾向于安装 wheel 格式的包。
  • virtualenv 用来创建隔离的环境,pip 被用来在这些环境中安装依赖。
  • twine 用来安全地上传包到 PyPI,通常与 setuptools 和 wheel 结合使用。
  • build 是一个新兴的构建工具,使用 PEP 517 接口,可以使用 setuptools 作为构建后端。

这些工具共同构成了 Python 包管理和分发的完整生态系统,简化了 Python 开发者的工作流程。


转载本站文章请注明作者和出处,请勿用于任何商业用途。欢迎关注公众号「DevOps攻城狮」

相关文章

Python 软件基金会 (PFS) 基础设施概览
·1828 字·4 分钟
本文介绍了 Python 软件基金会 (PFS) 的基础设施,包括其服务、提供商和团队成员,帮助读者了解 PFS 如何支持 Python 社区。
Python 和 SLSA 💃
·2039 字·5 分钟
本文介绍了如何在 Python 生态系统中使用 SLSA 框架来生成和验证 Python 工件的来源,从而提升软件供应链的安全性。
你的 Python 代码够不够 Pythonic?
·1093 字·3 分钟
本文介绍了 Pythonic 的概念,并通过示例展示如何编写更简洁、优美的 Python 代码,帮助开发者提升代码质量和可读性。
在 GitHub 上发布一个 Python 项目需要注意哪些
·1458 字·3 分钟
本文介绍个人或企业在 GitHub 上发布一个 Python 项目需要了解和注意的内容,包括项目结构、依赖管理、版本控制等方面的建议。
关于 Python pip install 与版本管理
·718 字·2 分钟
解释 pip install 在不同版本号场景下的行为,包括如何处理 beta 版本,以及在指定版本号时使用 --upgrade 的影响。
最受欢迎的 Python 自动化测试框架推荐
·749 字·2 分钟
本文整理了当前最受欢迎的 Python 自动化测试框架,包括 Robot Framework、RedwoodHQ、Jasmine 和 Pytest 的介绍和比较。