Python!请不要再乱搞 Linux 发行版了


Python 社区痴迷于重新发明轮子,一遍又一遍,一遍又一遍。distutils、setuptools、pip、pipenv、tox、flit、conda、poetry、virtualenv、requirements.txt、setup.py、setup.cfg、pyproject.toml ……老实说,我什至无法列出你必须处理的所有事情. 这是一场灾难。


这部漫画已经有将近4年的历史了,后来变得更糟糕了。Python是一个烂摊子。我真的想喜欢Python。我已经在许多项目中使用它很多年了,包括SourceHut,它主要是用Python开发的。但我根本无法处理它了,我一直在努力将Python从我的堆栈中移除。

这一直是Python的一个问题,但在过去的几年里,每个人和他们的表弟都决定通过建立另一个与所有其他的完全不兼容的混乱来 "解决 "这个问题,所有的 "解决方案 "都在社区中获得了不同程度的成功,但没有一个被祝福为官方的答案。

我以我认为唯一合理的方式管理我的 Python 包:从我的 Linux 发行版的软件包管理器中安装它们。我自己为 Alpine Linux 维护了几十个 Python 包。正是从这个角度出发,在 Python 打包世界的所有这些动荡中,我发现自己感到特别不舒服。

这些软件包管理器中的每一个都是为一个鲁莽的世界而设计的,在这个世界里,程序员们把软件包批发到~/.pip中,设置virtualenvs并把他们的依赖关系钉在10个版本和6个漏洞之前,并把他们的计算机直接装在Docker容器中运送到生产中,目的是做最少的事情,使用户的私人数据尽可能不安全。

尽管我们一再请求,但这些新式的解决方案没有一个能满足任何发行版的需求。他们都破坏了与我们的使用案例的向后兼容性,并将我们的投诉发送到/dev/null。我已经看到来自每个 Linux 发行版的代表反复地、绝望地请求 Python 解决他们的问题,从 Debian 到 Arch 到 Alpine 到 NixOS,还有非 Linux 发行版,如 FreeBSD 和 Illumos。每个人都很沮丧。我们现在都在挣扎着与 Python 打交道,而 Python 却不听我们的。

是什么让 Linux 发行版使我们的用例变得不重要了?在过去的 30 年中,我们没有给 Python 提供任何价值吗?你是否觉得是时候甩掉我们所代表的 "遗留 "系统,拥抱勇敢的新世界--无服务器云规模的监管--套利的移动--快速和打破东西的techbro创业公司文化?

发行版现在感到特别沮丧,但我不认为我们是孤独的。每个人都对Python包装感到沮丧。我呼吁PSF坐下来进行一些严肃、清醒的工程工作来解决这个问题。拟定一份你需要支持的用例清单,挑选出最有希望的方案,并投入时间使其正常工作,从今天到明天。设计一些你可以坚持的东西,并使其在未来30年内保持稳定。如果你必须打破一些人的心,没关系。不是所有这些解决方案都能获胜。现在,上游的忽视正在毁掉Python的生态系统。情况很严重,我们现在需要强有力的上游领导。