Following system colour scheme - Python 增强提案 Selected dark colour scheme - Python 增强提案 Selected light colour scheme - Python 增强提案

Python 增强提案

PEP 715 – 在 PyPI 上禁用 bdist_egg 分发包上传

作者:
William Woodruff <william at yossarian.net>
发起人:
Donald Stufft <donald at stufft.io>
PEP 代理人:
Donald Stufft <donald at stufft.io>
讨论至:
Discourse 帖子
状态:
最终版
类型:
标准跟踪
主题:
打包
创建日期:
2023年6月6日
发布历史:
2023年6月9日
决议:
2023年6月24日

目录

摘要

本 PEP 建议弃用,然后禁用 PyPI 上 bdist_egg 分发类型的新的上传。同时,本 PEP 建议弃用,然后禁用带有 .egg 后缀的分发文件名的新的上传。

在本 PEP 之后,PyPI 将只接受 sdistbdist_wheel 类型的新的上传,分别对应带有 .tar.gz/.zip.whl 后缀的文件。

本 PEP 不建议移除或以其他方式影响任何以前上传的 bdist_egg 分发包或带有 .egg 后缀的文件。

基本原理

前期工作

这项提案的基础是 PEP 527,该提案建议弃用并最终移除对少量未(充分)使用的文件扩展名和分发类型上传的支持。

特别是,PEP 527 建议移除 bdist_dumbbdist_rpmbdist_dmgbdist_msibdist_wininst 分发类型,以及分发文件名上的 .tar.tar.bz2.tar.xz.tar.Z.tgz.tbz 文件扩展名。

PEP 527 已通过 Warehouse 的 PR #7529 完全实施,该 PR 于 2020 年 4 月 13 日合并。

bdist_egg 格式

bdist_egg 文件类型标识 egg 格式的分发包。egg 格式由 setuptools 于 2004 年引入,其功能大致相当于 wheel 格式,后者由 PEP 427 于 2012 年首次引入,作为 二进制分发包的标准化格式

尽管 egg 格式存在已久,但在 PyPI 上的采用率有限。该问题的一些观察结果:

  • 2023 年 5 月,bdist_egg 上传占 PyPI 所有分发包上传的 0.2%;
  • pip 在 2016 年弃用了其 --egg 选项;
  • setuptools 自 2019 年以来一直认为 egg 支持已弃用;
  • build 只支持 sdistbdist_wheel 文件类型。

鉴于上述情况,本 PEP 建议移除 bdist_egg 格式,理由与 PEP 527 中提出的相同,即:

  • Egg 分发包对更广泛的生态系统用途有限,因此代表着一种非互惠的维护负担;
  • 拥有额外的内置分发格式会给最终用户造成困惑,他们可能会错误地选择它而不是 wheel 格式;

本 PEP 此外还提出了基于标准化和重复性的移除论点:egg 格式未通过任何 PEP 或其他社区标准进行标准化,并且与其标准化且受良好支持的替代方案(wheel)大量重叠。

.egg 文件扩展名

.egg 文件扩展名专门用于 bdist_egg 格式的分发包。因此,在 PyPI 禁用 bdist_egg 分发包的新上传的情况下,它没有任何作用。

移除过程

本 PEP **不**建议从 PyPI 中移除任何现有文件,而只禁止上传新文件。

PyPI 将提供一个月的弃用期。在弃用期开始时,自 2023 年 1 月 1 日以来上传过一个或多个 egg 分发包的项目维护者将收到一封一次性电子邮件,告知他们即将停止支持 egg 分发包上传。

在弃用期内,用户将继续被允许向新项目和现有项目上传 egg 分发包。在此期间上传 egg 分发包也将向项目所有维护者发送类似上述的电子邮件,提醒他们即将停止支持。

弃用期结束后,PyPI 将不再支持上传 egg 分发包。

先行实践

上述移除过程基于 PEP 527,并进行了以下更改:

  • 在弃用期内,所有项目将继续被允许上传 egg,而不仅仅是那些以前上传过的项目。
  • 在弃用期内上传 egg 也将触发向维护者发送电子邮件,除了开始时的一次性电子邮件。

向后兼容性

有限影响

正如在理由部分所述,本 PEP 预计对绝大多数 PyPI 用户和项目没有影响,并且在过去 1 年半的时间里已经进行了大量的社区协调,以尽量减少对少数剩余用例的影响。

托管文件

本 PEP **不**建议移除任何已上传到 PyPI 的 egg 分发包。所有以前上传的 egg 分发包将保持可下载状态,确保现有用户将继续能够下载它们。

弃用期

本 PEP 使用上面记录的移除过程,该过程规定了对以前已将 egg 分发包上传到 PyPI 的项目有一个月的弃用期。

弃用期结束后,PyPI 将不再支持上传新的 egg 分发包。

安全隐患

本 PEP 未发现与移除 egg 分发包上传支持相关的任何正面或负面安全隐患。

如何教授

作为移除过程的一部分,PyPI 将向 2023 年曾上传过 egg 分发包的所有项目维护者发送电子邮件。

此外,PyPI 将在 PyPI 博客上发布一篇博文,公开宣布弃用期的开始和结束。


来源:https://github.com/python/peps/blob/main/peps/pep-0715.rst

最后修改:2025-02-01 08:55:40 GMT