我们都知道python从2.x升级到3.x的过程中有一些不兼容的改动,但是有时还我们不得不将2.x的程序升级到3.x。
主要不兼容如下图:
移植过程:
1) 确保存在的代码有足够的测试覆盖。从2.x到3.x的升级工作量并不是很大,但是包含了很多的微小的不兼容,必须通过测试来确保升级后的程序仍然保持原有的功能。完全的测试覆盖不是被建议的,但是确实是需要的。
2) 用python 2.6 的 -3 命令行选项来运行程序,从而发现和去除明显的不兼容问题。
3) 使用2to3转化工具来自动地将程序转化为3.x版本,很多的不兼容问题会在转化的过程中被fix,同时一些需要手动升级的不兼容会被指出。
4) 使用python 3.x来运行新版本的程序,然后fix一些错误。同时也可能需要对测试代码进行相应的fix。直到所有的代码和测试代码通过。
参考:
The Quick Python Book
Python essential 4
很详细的python2到Python3的差别:(来自dive into python3的使用2to3将代码移植到Python 3)
http://woodpecker.org.cn/diveintopython3/porting-code-to-python-3-with-2to3.html