当前位置: 首页 > 面试题库 >

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

漆雕疏珂
2023-03-14
问题内容

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

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

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

问题答案:

这是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。我想为所有这些人提供尽可能长的积极体验。



 类似资料:
  • 我目前正在研究Flyway作为Liquibase的替代方案,但在文档中无法找到以下问题的答案: 假设在生产环境中部署后发现迁移包含错误。回想起来,不应该按原样执行,但已经太晚了。但是,我们想用固定版本的替换迁移,这样从头开始填充的数据库就不会遭受相同的错误。 在 Liquibase 中,您将修复原始变更集并使用

  • 本文向大家介绍Django 处理迁移,包括了Django 处理迁移的使用技巧和注意事项,需要的朋友参考一下 示例 Django使用迁移将您对模型所做的更改传播到数据库。django大多数时候都可以为您生成它们。 要创建迁移,请运行: 这将在的migration子模块中创建一个迁移文件app_name。第一个迁移将被命名0001_initial.py,另一个将以开头0002_,然后0003是...

  • 问题内容: 假设我有以下jQuery AJAX调用: 现在,当进行此AJAX调用时,我希望服务器端代码通过一些错误处理检查来运行(例如,用户是否仍在登录,他们是否有权使用此调用,数据是否有效,等等)。如果检测到错误,如何将错误消息冒泡回客户端? 我最初的想法是返回一个带有两个字段的JSON对象:error和errorMessage。然后将在jQuery AJAX调用中检查以下字段: 这对我来说有点

  • 问题内容: 如何确保可以将代码检出到Eclipse或NetBeans中并在其中使用? 编辑:如果不签入与ide相关的文件,则每次签出项目时,都必须重新配置buildpath,包括所有这些内容。我不知道ant(尤其是从eclipse创建/导出的ant buildfile)是否可以与其他ide无缝配合使用。 问题答案: 明智的选择是“这样做”-除非您不使用多个IDE,否则您不知道您是否真的准备好使用多

  • 我一直在尝试创建一个,它也有一个处理程序。我阅读了这个问题的答案并知道如何做到这一点。 我的问题只是关于它的结束部分。 1) 我知道我可以写:或,但我不会写。在这里的注释中解释了这一点,因为您需要处理参数操作。 这是否意味着由于处理程序是

  • 场景如下: 将windowOpened()处理程序添加到JDialog的新实例 首次使用jdialog显示对话框。setVisible(true) 如预期:windowOpened()处理程序已触发 jdialog。setVisible(false) jdialog。setVisible(true) 预期,但未发生:windowOpened()处理程序已触发 当我的模态对话框第一次出现在屏幕上时,