D.7 其他转换工具和技巧
除了Python 2.6之外,开发人员可以使用很多工具来更顺利地过渡到Python 3.x,尤其是-3开关(它提供了过时警告)和2to3工具(可以在http://docs.python.org/3.0/library/2 to3.html阅读关于它的更多信息)。然而,可以“编写”的最重要的工具就是一个好的过渡计划。实际上,没有计划的替代品。
显然,Python 3.x的变化并不代表熟悉的Python语法的一些巨大变化。相反,这些变化刚好足以打破旧有的代码库。当然,这些变化将会影响用户,所以一个好的过渡计划是至关重要的。大多数好的计划都来自于工具或在这方面的辅助。“What’s New in Python 3.0”文档中的移植建议特别声明,除了关键工具的使用之外,好的测试代码是至关重要的。讲得重一点,下面正是 http://docs.python.org/3.0/whatsnew/3.0.html # porting-to-python-3-0 中建议的内容。
1.先决条件)从出色的测试覆盖率开始。
2.植到Python 2.6。这应该仅仅包括从Python 2.x到Python 2.(x+1)的平均移植。确保你的所有测试都通过。
3.仍然使用2.6)打开-3命令行开关。它能够开启有关Python 3.0中移除(或更改)特性警告功能。再次运行测试套件,并修复任何产生警告的代码。确保你所有的测试仍旧能够通过。
4.你的源码树运行2to3源码到源码转换器。在Python 3.0下运行转换结果。手动修复剩余的问题,然后继续修复问题直到所有测试都再次通过。
另一个要考虑的可选项就是 3to2 工具。顾名思义,它的功能与 2to3 工具相反:它接收Python 3代码,并尝试将其转换为Python 2下等效的代码。这个库由一个外部开发者维护,并且不是标准库的一部分。然而,这是一个有趣的选择,因为它鼓励人们以在Python 3中编码作为他们主要的开发工具,而这不是一件坏事。可以在http://pypi.python.org/pypi/3to2上了解有关3to2的更多信息。
第三种方法就是压根不移植;相反,开始时就编写能够运行于2.x和3.x上的代码(无须修改源代码)。这有可能吗?
