15

我有一些代码试图让它与 ESRI 的地理处理器很好地配合使用。但是,ESRI 的地理处理器在 Python 2.2、2.3、2.4、2.5 上运行。我们需要使我们的工具适用于任何版本。所以我花了很多时间为不同的版本工作和编码变通方法,这样包装器地理处理器在所有版本中都具有相同的功能。

现在重要的是,是否有某种应用程序可以基本上扫描模块以查看其语法和方法是否与上述 Python 版本向后兼容?

不幸的是,我无法安装 Python 2.2,因为我有 Arcgis 9.3,它需要 Python 2.5。反之亦然,我已经整理并解决了几乎所有模块依赖项。(win32com、ctypes 等)。

但是我担心我的实际代码,我可能会花几个小时去阅读为什么版本添加了哪些关键字等,但这基本上是一个非常令人头疼的问题。是否有某种应用程序可以做这些事情?

4

2 回答 2

11

如果您正在积极开发商业产品,并且您 - 真的 - 想要正确支持所有这些版本,我建议:

  1. 编写一个可以运行的自动化测试套件,并为您的整个库/应用程序/任何东西测试功能。

  2. 为每个测试环境(python 2.2-2.6 和任何平台组合,如果您的产品不是仅限 win32)设置一台机器或理想情况下的虚拟机。鉴于现在有几种免费的虚拟化产品(VirtualBox 和 VMWare Server,仅举两例),这在如今特别容易做到

  3. 使用buildbot之类的东西来自动化在所有其他平台上运行的测试,并收集结果。

然而,我可能会提到,2.2 和 2.3 之间以及 2.3 和 2.4 之间发生了重大变化。这就是为什么大多数 python 库只支持 2.3,并且现在有一些正在转向只支持 2.4 及更高版本。

每个主要版本都有一个“python 2.x 中的新功能”文档,但是为 2.2 编码意味着您会错过:

  • 生成器(2.3)(实际上,您可以在 2.2 中使用from __future__ import generators
  • 生成器表达式 (2.4)
  • 子流程模块(2.4)
  • 装饰器语法 (2.4)
  • 套 (2.3)
  • 十进制(2.4,但可以向后移植)
  • 日期时间 (2.3)
  • 迭代工具 (2.3)

仅举出一小部分您可能无法拥有的很棒的东西。

你必须真正考虑你多么想支持一个有 7 年历史的 python 版本,并且错过了许多可以减少代码大小(或者可能只是增加可读性)的酷特性。

于 2010-02-17T17:46:59.280 回答
10

尝试 pyqver:https ://github.com/ghewgill/pyqver/

为您提供分析使用的关键字和模块的给定 python 脚本的最低版本。

此外,您可以在本地编译 python 2.2 并使用 virtualenv 创建带有 --python 标志的 python 2.2 环境。

于 2010-02-17T17:46:00.183 回答