有关升级到python 3.0的提示?

时间:2009-07-02 00:51:00

标签: python python-3.x

因此,随着Python 3.0(现在是3.1)的最终版本,很多人都面临着如何升级而不会因为向后不兼容而丢失一半代码库的担忧。

人们有哪些最好的技巧可以避免因切换到下一代python几乎不可避免地导致的许多陷阱?

可能一个好的起点是“使用2to3将你的python 2.x代码转换为3.x”: - )

3 个答案:

答案 0 :(得分:3)

首先,这个问题与How are you planning on handling the migration to Python 3?非常相似。检查那里的答案。

Python Wiki中还有一个关于将应用程序移植到Python 3.x

section

Release Notes for python 3.0包含有关移植的部分。我在那里引用提示:

  
      
  1. (先决条件:)以优秀的考试覆盖率开始。
  2.   
  3. 端口到Python 2.6。这应该不是普通的工作   从Python 2.x到Python 2.(x + 1)。   确保所有测试都通过。
  4.   
  5. (仍在使用2.6 :)打开-3命令行开关。这将启用有关功能的警告   在3.0中删除(或更改)。跑你的   再次测试套件,并修复代码   你得到警告,直到有   没有任何警告,以及所有测试   仍然通过。
  6.   
  7. 在源代码树上运行2to3源到源转换器。   (参见2to3 - 自动Python 2到3   代码翻译了解更多   工具。)运行结果   Python 3.0下的翻译。手动   修复任何剩余的问题,修复   问题直到所有测试再次通过。
  8.         

    不建议尝试写   在...下运行不变的源代码   Python 2.6和3.0;你必须这样做   使用非常扭曲的编码风格,   例如避免印刷陈述,   元类,等等。如果你是   维护需要的库   支持Python 2.6和Python   3.0,最好的方法是通过编辑2.6修改上面的步骤3   源代码的版本并运行   2to3翻译再次,而不是   编辑3.0版本的源代码   代码。

答案 1 :(得分:3)

我写了一本关于此的免费书。你可以在这里阅读:

http://python3porting.com/

简而言之:

  1. 确保所有第三方库都可用于Python 3.
  2. 通过消除常见的歧义来准备您的代码:
    • 如果你真的想要整数除法,请使用//。
    • 确保在打开时用“b”标志标记二进制文件,以清楚地显示 表明你的意思是数据是否为二进制数。
  3. 您的测试覆盖率越高越好。
  4. 确保它在“Python 2.7 -3”下没有警告的情况下运行。
  5. 现在运行2to3。
  6. 修复任何错误。
  7. 就是这样,或多或少。

答案 2 :(得分:2)

如果没有真正令人信服的升级理由,我会坚持使用有效的方法。我看着升级我每天使用的脚本,这是太多的工作,没有我能看到的好处。

“如果没有破损,请不要修理它!”