首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >您计划如何处理到Python3的迁移?

您计划如何处理到Python3的迁移?
EN

Stack Overflow用户
提问于 2008-10-05 17:08:30
回答 6查看 10.2K关注 0票数 52

考虑到Python3即将面世,我确信这是大多数python开发人员都会考虑的主题。一些问题可以让我们朝着正确的方向前进:

  1. 您是要同时维护python 2和python 3版本,还是在完成后只维护python 3版本?

- Have you already started or plan on starting soon?  Or do you plan on waiting until the final version comes out to get into full swing?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-10-18 04:59:57

以下是Twisted的总体计划。我原本打算写这个博客,但后来我想:既然我可以获得积分,为什么还要写博客呢?

  1. Wait,直到有人关心为止。

现在,还没有人使用Python3。在至少有一个实际用户站出来说“我需要Python3.0支持”之前,我们不会花费太多精力,而且除了3.0看起来像shiny.

  • Wait,直到我们的依赖项迁移之外,还有一个很好的理由。

像Twisted这样的大型系统有许多依赖项。对于初学者,我们的内容包括:

- [Zope Interface](http://www.zope.org/Products/%5AopeInterface)
- [PyCrypto](http://www.dlitz.net/software/pycrypto/)
- [PyOpenSSL](https://launchpad.net/pyopenssl/)
- [pywin32](http://sourceforge.net/projects/pywin32/)
- [PyGTK](http://www.pygtk.org/) (though this dependency is sadly very light right now, by the time migration rolls around, I hope Twisted will have more GUI tools)
- [pyasn1](http://pyasn1.sourceforge.net/)
- [PyPAM](http://www.pangalactic.org/PyPAM/)
- [gmpy](http://gmpy.sourceforge.net/)

其中一些项目有自己的依赖数组,所以我们也必须等待它们。

  1. Wait直到有人对help.足够关心为止

慈善地,有5个人在Twisted上工作--我说“慈善地”是因为这也算上了我,而我已经几个月没有承诺过了。我们现在有over 1000 open tickets,在花时间将其移植到新的语言版本之前,如果能真正修复其中的一些错误,添加功能,并通常使Twisted成为一个更好的产品,那将是一件很好的事情。

这可能包括Guido足够关心我们的费用,但我希望会有一批志愿者涌入,他们关心3.0的支持,并希望帮助推动社区forward.

这意味着,我们将遵循Guido去年发布的transitional development guidelines。这从进行单元测试开始,并针对2to3工具运行针对扭曲的codebase.

当我们达到实际使用它的地步时,我预计将来运行2to3会有很多问题。现在在Twisted上运行它需要非常长的时间(上次我检查过了,那是很久以前的事了),不能解析Twisted存储库中的一些文件,所以结果输出不会导入。我认为在它真正为我们工作之前,必须从小项目中获得相当多的成功案例,并在工具上进行大量的锤击。

但是,Python开发团队在响应我们的错误报告方面非常有帮助,对这些问题的早期响应也令人鼓舞,所以我希望所有这些问题都将在几年内在time.

  • Maintain 2.x兼容性中得到解决。

目前,Twisted支持python 2.3到2.5。目前,我们正在开发2.6版本的支持(显然我们必须在3.0版本之前完成)。我们的计划是基于长期支持的Ubuntu版本来修订我们的Python8.04版本,其中包括Python2.5,将支持到2013年。根据Guido的建议,为了支持3.0,我们需要放弃对2.5的支持,但我希望我们能找到一种绕过这一点的方法(我们在版本兼容性方面很有创意)。

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

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

这样做的结果是,Python 3.x直到我35岁生日之后才会成为Twisted的源语言-它将成为我的python 2.x代码的目标运行时(以及一组指导方针和限制)。我希望在接下来的十年左右用Python2.x编写程序。

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

然而,就目前而言,我们假设,多年来,我们将会有一些拥有大量代码库的人(或者编写新代码的人,他们希望使用其他尚未迁移的库)仍然希望Twisted中有新功能和错误修复。很快,我预计我们也会有新锐的用户想要在python 3上使用Twisted,我想为所有这些人提供一个尽可能长时间的积极体验。

票数 90
EN

Stack Overflow用户

发布于 2012-10-27 06:00:42

Django项目使用库six来维护同时在Python2和Python3 (blog post)上工作的代码库。

six通过提供一个兼容层来实现这一点,该兼容层可以智能地将导入和函数重定向到它们各自的位置(以及统一其他不兼容的更改)。

明显的优势:

  • 不需要为Python 2和Python 3单独创建分支
  • 不需要转换工具,如2to3。
票数 8
EN

Stack Overflow用户

发布于 2008-10-05 17:50:42

2.6的主要思想是提供到3.0的迁移路径。因此,您可以使用from __future__ import X一次缓慢地迁移一个特性,直到您确定所有这些特性并可以迁移到3.0。3.0中的许多特性也将流入2.6,因此您可以逐渐缩小语言差距,而不必一次性迁移所有内容。

在工作中,我们计划首先从2.5升级到2.6。然后,我们开始缓慢地启用3.0特性,一次一个模块。在某种程度上,系统的整个子部分可能会为3.x做好准备。

唯一的问题是库。如果一个库从未迁移过,我们就只能使用旧的库。但我很有信心,我们会在适当的时候为这部分找到一个很好的替代品。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/172306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档