当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《你打算如何处理迁移到Python3?》经验,为你挑选了3个好方法。

考虑到Python 3即将推出,我确信这是大多数python开发人员的主题.一些问题让我们朝着正确的方向前进:

    你是否会同时维护python 2和python 3版本,或者你只需​​要一个python 3版本一旦完成?

    您是否已经开始或计划很快开始?或者你打算等到最终版本出来全面展开?

Glyph.. 90

这是Twisted的总体计划.我本来打算写博客,但后来我想:为什么博客会在我获得积分的时候得到它?

    等到有人关心.

    现在,没有人拥有Python 3.我们不会花费大量精力,直到至少有一个实际用户出现并说"我需要Python 3.0支持",并且有充分的理由除了这个事实之外3.0看起来很闪亮.

    等到我们的依赖项已迁移.

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

    Zope接口

    PyCrypto

    PyOpenSSL

    pywin32

    PyGTK(虽然这种依赖性现在非常轻松,但是当迁移到处时,我希望Twisted会有更多的GUI工具)

    pyasn1

    PyPAM

    gmpy

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

    等到有人关心得到帮助.

    有慈善的是,有5个人在Twisted上工作 - 我说"慈善",因为那是在算我,而且我几个月都没有承诺过.我们现在有超过1000张开放票,实际上修复其中的一些 - 修复错误,添加功能,并且通常使Twisted成为一个更好的产品本身就好 - 然后花时间将其移植到一个实质上新版本的语言.

    这可能包括赞助商足以支付我们的费用,但我希望有大量志愿者关心3.0支持,并希望帮助推动社区向前发展.

    按照Guido的建议.

    这意味着我们不会更改我们的API不兼容,我们将遵循Guido去年发布的过渡开发指南.首先是进行单元测试,然后在Twisted代码库上运行2to3转换工具.

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

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

    但是,Python开发团队在响应我们的错误报告方面非常有帮助,对这些问题的早期响应一直很令人鼓舞,所以我希望所有这些问题都能及时修复.

    多年来保持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的前沿用户.我想尽可能长时间地为所有这些人提供积极的体验.



1> Glyph..:

这是Twisted的总体计划.我本来打算写博客,但后来我想:为什么博客会在我获得积分的时候得到它?

    等到有人关心.

    现在,没有人拥有Python 3.我们不会花费大量精力,直到至少有一个实际用户出现并说"我需要Python 3.0支持",并且有充分的理由除了这个事实之外3.0看起来很闪亮.

    等到我们的依赖项已迁移.

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

    Zope接口

    PyCrypto

    PyOpenSSL

    pywin32

    PyGTK(虽然这种依赖性现在非常轻松,但是当迁移到处时,我希望Twisted会有更多的GUI工具)

    pyasn1

    PyPAM

    gmpy

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

    等到有人关心得到帮助.

    有慈善的是,有5个人在Twisted上工作 - 我说"慈善",因为那是在算我,而且我几个月都没有承诺过.我们现在有超过1000张开放票,实际上修复其中的一些 - 修复错误,添加功能,并且通常使Twisted成为一个更好的产品本身就好 - 然后花时间将其移植到一个实质上新版本的语言.

    这可能包括赞助商足以支付我们的费用,但我希望有大量志愿者关心3.0支持,并希望帮助推动社区向前发展.

    按照Guido的建议.

    这意味着我们不会更改我们的API不兼容,我们将遵循Guido去年发布的过渡开发指南.首先是进行单元测试,然后在Twisted代码库上运行2to3转换工具.

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

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

    但是,Python开发团队在响应我们的错误报告方面非常有帮助,对这些问题的早期响应一直很令人鼓舞,所以我希望所有这些问题都能及时修复.

    多年来保持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的前沿用户.我想尽可能长时间地为所有这些人提供积极的体验.


1.代表Ubuntu和Gnome社区,我想表达我们既关心,又想要并且需要python3支持.在Ubuntu方面,我们不想在CD上发布python2,如果可能的话,将python2从main移动到Universe,这样我们就可以减少python2解释器的维护和安全工作.
2.可用的Ubuntu包:python3-zope.interface python3-crypto python3-openssl pygtk通过python3-gi对象interpection python3-pyasn1 python3-pam上游支持可用:python-gmpy(支持上游不在ubuntu中,我会为你打包尽快)
据我所知,在帮助你方面取得了一些进展.

2> Thane Brimha..:

Django项目使用该库six来维护一个在Python 2 Python 3 上同时工作的代码库(博客文章).

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

明显优势:

不需要为Python 2和Python 3提供单独的分支

没有转换工具,例如2to3.


我跟那个使用六个人将Django移植到python 3的人(Aymeric)交谈过:他告诉我这是一项巨大的工作(代码中20%的行必须修改),但一旦完成,就完成了,没有维持两个分支和2to3黑客攻击.坦率地说,我认为Guido应该改变他的指导方针并结束2到3的混乱:每个人使用六个!

3> I GIVE CRAP ..:

2.6的主要思想是提供3.0的迁移路径.因此,您可以一次使用from __future__ import X缓慢迁移一个功能,直到您将所有功能都固定为可以移动到3.0.许多3.0功能也将流入2.6,因此您可以逐渐缩小语言差距,而不必一次性迁移所有内容.

在工作中,我们计划首先从2.5升级到2.6.然后我们开始一次缓慢地启用3.0功能一个模块.在某些时候,系统的整个子部分可能已准备好用于3.x.

唯一的问题是图书馆.如果永远不会迁移库,我们会坚持使用旧库.但我非常有信心,我们将在适当的时候为这一部分提供一个很好的选择.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有