小编典典

您打算如何处理向Python 3的迁移?

python

考虑到Python 3即将问世,我确定这是大多数python开发人员都会想到的主题。一些使我们朝正确方向前进的问题:

  1. 您将同时维护python 2和python 3版本,还是在完成后仅拥有python 3版本?

    • 您是否已经开始或计划很快开始?还是打算等到最终版本全面推出后才打算?

阅读 213

收藏
2020-12-20

共1个答案

小编典典

这是Twisted的总体计划。我原本打算为此写博客,但后来我想:为什么在我可以为此获得 积分的情况下 写博客呢?

  1. 等到有人在乎。

现在,没有人拥有Python3。在至少一个实际用户说“我需要Python
3.0支持”之前,我们不会花费很多精力,除了有以下事实之外,还有充分的理由3.0看起来很有光泽。

  1. 等待,直到我们的依赖项已迁移。

像Twisted这样的大型系统具有许多依赖性。首先,我们的产品包括:

* [Zope界面](http://www.zope.org/Products/ZopeInterface)
* [PyCrypto](http://www.dlitz.net/software/pycrypto/)
* [PyOpenSSL](https://launchpad.net/pyopenssl/)
* [pywin32](http://sourceforge.net/projects/pywin32/)
* [PyGTK](http://www.pygtk.org/)(尽管现在这种依赖关系非常轻巧,但是随着迁移的进行,我希望Twisted会有更多的GUI工具)
* [pyasn1](http://pyasn1.sourceforge.net/)
* [PyPAM](http://www.pangalactic.org/PyPAM/)
* [脾气暴躁的](http://gmpy.sourceforge.net/)

其中一些项目具有自己的依赖项数组,因此我们也必须等待。

  1. 等到有人足够在意 帮助

慈善地,有5个人从事Twisted的工作-
我说“慈善”是因为这很重要,而我几个月来都没有做出承诺。我们目前有1000多个开放票证,在花一些时间将其移植到实质内容之前,最好先修正其中的一些错误-
修复错误,添加功能,并通常使Twisted成为更好的产品。语言的新版本。

这可能包括赞助商关心得足够为我们付费的赞助商,但我希望会有大量关心3.0支持并希望帮助推动社区前进的志愿者涌入。

  1. 遵循Guido的建议。

这意味着
我们不会不兼容地更改我们的API

,并且将遵循Guido去年发布的过渡性开发指南。首先要进行单元测试,然后在Twisted代码库上运行2to3转换工具

  1. 报告针对2to3工具的错误和文件补丁

当我们达到实际使用的程度时,我预计2to3将来的运行会出现很多问题。现在在Twisted上运行它需要花费很长时间,并且(最后一次检查,是我前一段时间检查的)无法解析Twisted存储库中的一些文件,因此不会导入结果。我认为,在小型项目对我们真正起作用之前,必须有大量来自小型项目的成功案例,并且需要大量投入。

但是,Python开发团队在响应我们的错误报告方面非常有帮助,并且对这些问题的早期响应令人鼓舞,因此我希望所有这些问题都将得到及时解决。

  1. 保持2.x兼容性几年。

目前,Twisted支持python
2.3至2.5。当前,我们正在开发2.6支持(显然,我们必须在3.0之前完成!)。我们的计划是基于Ubuntu的长期受支持版本修订受支持的Python版本-
包括Python
2.5的8.04版将受支持到2013年。根据Guido的建议,我们需要放弃对2.5的支持才能支持3.0,但我希望我们能找到解决方法(我们对版本兼容性黑客颇有创意)。

因此,我们计划至少在2013年之前支持Python
2.5。在两年内,Ubuntu将发布另一个长期受支持的Ubuntu版本:如果它们仍然存在并按计划进行,则将为10.04。我个人认为这将随Python
2.x(也许是python 2.8)一起提供/usr/bin/python,因为该发行版中打包了很多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中的新功能和错误修复。很快,我希望我们还会有一些尖端的用户,他们希望在python
3上使用Twisted。我想为所有这些人提供尽可能长的积极体验。

2020-12-20