使Python 2与Python 3兼容

时间:2015-05-13 11:47:30

标签: python porting python-2to3

我目前的要求是在Python 2.4.3中编写一个与RHEL 5捆绑在一起的脚本。但是几年之后,5年后,服务器可能升级到RHEL 8或9,Python 3附带。所以我应该编写兼容两个版本的代码。现在我的脚本包含基本操作,例如创建目录,解压缩文件,文件操作,XML文件读取(我现在正在使用minidom)和一些散列。

现在我发现名为python-modernize的工具可以完成2to3之上构建的工作。我搜索了该工具,但我得到了一个tar.gz文件。它不包含python-modernize文件,因为它们在其用法中说明了它。但我发现的只是一个setup.py文件。我是Python新手,我所知道的是pip完成了一些事情。但我也读过,使用pip对于Python 2.4.3来说是一项艰巨的工作。

请告诉我如何完成工作。

我还提到了this,但找不到如何使用该工具。

如果有更好的选择,请告诉我。

1 个答案:

答案 0 :(得分:1)

使用Benjamin Peterson的six图书馆。

它专为此用例而设计。 它允许您通过从六个库中导入不同于2到3的内容来拥有支持Python 2和Python 3的单个代码库。

只需简单地导入并使用它的定义:

import six

示例:

from six import u, b

以上是经典的,其中Python 3+对Unicode字符串和字节的工作方式进行了更严格的修改。

  

Six是Python 2和3兼容库。它提供了实用性   用于平滑Python之间差异的函数   目标是编写兼容的Python代码   两个Python版本。有关更多信息,请参阅文档   提供的是什么。

     

Six支持自2.5以来的每个Python版本。它仅包含在内   一个Python文件,因此可以轻松地复制到您的项目中。 (该   必须保留版权和许可声明。)

更新:抱歉,我错过了那里的Python<=2.5要求;但老实说,我认为使用六是你最好的选择。你必须说服那些你 使用最少Python 2.5的权力。

更新#2:我最强烈的建议是将代码升级到Python 2.7。不要落在后面,否则你将永远落后于球!

更新#3:根据以上非常有用的评论;我同意。只需使用你现在拥有的东西。 5年确实是一段很长的时间,到那时也可能没有相同的限制!