我有一些代码,我试图让它与ESRI的地理处理器很好地配合。但是,ESRI的地理处理器运行在Python 2.2,2.3,2.4,2.5上。我们需要让我们的工具适用于任何版本。因此,我花了很多时间为不同的版本编写解决方法,以便包装器地理处理器在所有版本中具有相同的功能。
现在这里有一件大事,是否有某种应用程序基本上可以扫描模块,看它的语法和方法是否与上述Python版本向后兼容?
不幸的是,我无法安装Python 2.2,因为我有Arcgis 9.3,它需要Python 2.5。反之亦然,我已经完成了所有模块依赖关系的排序和计算。 (win32com,ctypes等)。
但我担心我的实际代码,我可以花上几个小时去阅读为什么版本等添加关键字,但这基本上将是一个巨大的麻烦。是否有某种应用程序可以执行这些操作?
答案 0 :(得分:11)
如果您正在积极开发商业产品,并且您真的想要正确支持所有这些版本,我建议:
编写一个可以运行的自动化测试套件,并测试整个库/应用程序的功能。
为每个测试环境设置一台机器或理想的虚拟机(如果您的产品不是win32,则为python 2.2-2.6和任何平台组合)。鉴于现在有几种免费的虚拟化产品(VirtualBox和VMWare Server,名称为2),现在这一点特别容易做到。
使用buildbot之类的东西自动运行在所有其他平台上运行的测试,并收集结果。
我可能会提到,2.2和2.3之间以及2.3和2.4之间都有重大变化。这就是为什么大多数python库只支持2.3,而且一些数字正在转向仅支持2.4及以上。
每个主要版本都有一个“python 2.x中的新功能”文档,但编码2.2意味着你错过了:
from __future__ import generators
在2.2中获取它们)只是举出一小部分你可能不会拥有的令人敬畏的东西。
你必须真正考虑你想要支持一个7岁的python版本有多么糟糕,并错过了许多可以减少你的代码大小(或者可能只是提高可读性)的很酷的功能。
答案 1 :(得分:10)
尝试pyqver:https://github.com/ghewgill/pyqver/
为您提供分析所用关键字和模块的给定python脚本的最低版本。
此外,您可以在本地编译python 2.2并使用virtualenv创建一个带有--python标志的python 2.2环境。