你打算如何处理迁移到Python 3?

6 浏览
0 Comments

你打算如何处理迁移到Python 3?

我相信这对大多数Python开发者来说是一个关注的话题,考虑到Python 3即将发布。以下是一些问题,帮助我们朝着正确的方向前进:

  1. 你是否会同时维护Python 2和Python 3版本,还是仅提供Python 3版本?

    • 你是否已经开始了或计划立即开始?还是打算等到最终版本发布后才全力投入?
admin 更改状态以发布 2023年5月23日
0
0 Comments

Django项目使用six库来同时维护Python 2和Python 3的代码库(博客帖子)。

six 通过提供兼容性层智能地将导入和函数重定向到它们各自的位置(以及统一其他不兼容变化)来实现此目标。

明显优势:

  • 不需要为Python 2和Python 3分别创建分支
  • 没有转换工具,如2to3。
0
0 Comments

这是Twisted的一般计划。本来打算写篇博客的,但想了想:既然能通过此次提交获得积分,何必写博客呢?

  1. 等到某人关心此事。

    现在,没有人使用Python 3.0。我们不会花费大量精力,除非至少有一个用户出现并说:“我需要Python 3.0支持”,并且有除了‘看起来很新颖’之外的充分理由。

  2. 等到我们的依赖库迁移完成。

    像Twisted这样的大型系统有许多依赖项。其中包括:

    有些项目有它们自己的一系列依赖项,所以我们还要等待。

  3. 等到有人关心并提供帮助。

    现在,大善人约有5人涉足Twisted,我说“大善人”是比较客气的,因为那包括我的身影,而我已经好几个月没进行过提交了。我们现在有 1000多个开放的任务,在将它迁移到语言的新版本之前,修复一些问题、添加一些功能,让Twisted成为一个更好的产品,这是很好的。

    这个过程可能包括赞助商提供足够的资金资助我们完成,但我希望有更多关心3.0支持并想帮助推动社区发展的志愿者加入。

  4. 遵循Guido的建议。

    这意味着我们不会不兼容地更改API,并且我们将遵循Guido去年发布的 过渡性开发指南。这始于拥有单元测试,以及对Twisted代码库运行2to3转换工具

  5. 报告2to3工具的缺陷,以及提交针对该工具的补丁。

    当我们实际使用2to3时,我预计未来将会出现许多问题。目前对Twisted运行它需要花费非常长的时间(我上次检查已经是相当长时间以前了),并且无法解析Twisted代码库中的某些文件,因此生成的输出无法导入。我认为在它真正对我们起作用之前,需要有许多小项目的成功案例和大量的工具测试。

    然而,Python开发团队在响应我们的bug报告方面非常有帮助,对这些问题做出的早期响应是令人鼓舞的,因此我期望所有这些问题都将在未来得到解决。

  6. 在几年内维持2.x兼容性。

    目前,Twisted支持Python 2.3到2.5。目前,我们正在开发2.6支持(显然我们必须在3.0之前完成!)。我们的计划是根据长期支持版本的Ubuntu(Ubuntu)来修订我们支持的Python版本。 包括Python 2.5的版本8.04将在2013年之前得到支持。根据Guido的建议,我们将需要放弃2.5的支持,以支持3.0,但我希望我们能找到一种解决此问题的方法(我们在版本兼容性方面非常有创意)。

    因此,我们计划至少支持Python 2.5到2013年。两年后,Ubuntu将发布另一个长期支持版本的Ubuntu:如果它们仍然存在并按计划进行,则将是10.04。就个人猜测而言,这将作为/usr/bin/python的Python 2.x版本发布,可能是python 2.8,因为大量的Python软件已经打包到发行版中,更新这些软件需要很长时间。因此,从那时起的五年后,即2015年,我们可以开始考虑放弃2.x支持。

    在此期间,我们将继续遵循Guido关于迁移的建议:对我们的2.x代码库运行2to3,并修改2.x代码库以使其测试在两个版本中均能通过。

    这意味着,直到我35岁后很长一段时间,Python 3.x不会成为Twisted的源代码语言 - 它将成为我的Python 2.x代码的目标运行时(以及一组指南和限制)。我预计将在未来十年左右使用Python 2.x编写程序。

因此,这就是我们的计划。我希望在一年左右的时间内,它看起来保守得让人发笑;3.x转换非常容易,所有人都能够迅速升级。也可能会发生其他事情:2.x和3.x分支可能会融合,有人可能最终编写出3to2,或者另一个运行时(如PyPy)可能允许直接在同一进程中运行2.x和3.x代码,从而使我们的转换过程更加容易。

然而,目前我们假设在未来的许多年里,仍有人们需要维护大型代码库(或者编写新代码使用尚未迁移的其他库),他们仍然希望在Twisted中得到新功能和错误修复。不久后,我预计我们也会有想要在Python3上使用Twisted的前沿用户。我希望为所有这些人提供尽可能长久的正面体验。

0