这个问题在这里已经有答案了:

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

人们有哪些最佳技巧可以避免切换到下一代 Python 时几乎不可避免地出现的许多陷阱?

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

有帮助吗?

解决方案

首先,这个问题非常类似于 您计划如何迁移到 Python 3?. 。检查那里的答案。

还有一个 部分 在 Python Wiki 中有关将应用程序移植到 Python 3.x 的内容

python 3.0 发行说明 包含有关移植的部分。我引用那里的提示:

  1. (先决条件:)从出色的测试覆盖率开始。
  2. 移植到 Python 2.6。这不应比从Python 2.x到Python的平均POR还要多。(x+1)。确保所有测试都通过。
  3. (仍然使用2.6:)打开-3命令行开关。这可以警告有关将在3.0中删除(或更改)的功能的警告。再次运行测试套件,并修复您会收到警告的代码,直到剩下警告为止,所有测试仍然通过。
  4. 在源代码树上运行 2to3 源到源转换器。(有关此工具的更多信息,请参见2to3-自动化Python 2至3代码翻译。)运行Python 3.0下的翻译结果。手动解决剩余问题,解决问题,直到所有测试再次通过。

不建议尝试编写在Python 2.6和3.0下运行不变的源代码;您必须使用非常扭曲的编码样式,例如避免打印陈述,元类等。如果您要维护一个需要支持Python 2.6和Python 3.0的库,那么最好的方法是通过编辑源代码的2.6版本并再次运行2to3 Translator,而不是编辑3.0版本,而不是编辑3.0版本源代码。

其他提示

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

http://python3porting.com/

简而言之:

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

或多或少就是这样。

如果没有真正令人信服的升级理由,我会坚持使用有效的方法。我研究了升级我每天使用的脚本,这工作量太大,但我看不到任何好处。

“如果它没有坏,就不要修理它!”

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top