Python 3的SOAP客户端

6

虽然这个问题在StackOverflow上非常流行,但在这里和Google上花了一些时间后,我仍然没有找到一个确切的答案来说明在Python 3中进行SOAP消费的最合适的方式。

我看了一下Python 3 SOAP客户端模块是否存在?,希望它已经过时了,现在可能已经出现了某些解决方案。

我考虑了一些想法:

  1. 使用2to3脚本将一些现有的库(如SOAPy、suds等)移植到Python 3。
  2. 通过混合技术(Py3k + Jython、Py3k + Python 2.6等)加载外部模块。
  3. 编写硬编码Python类,对应于WSDL文件的定义(这意味着紧耦合/高维护成本)。
  4. 在Python 3.0中编写软件,通过execnet package调用“python2.6-only”模块函数。这需要在机器上安装Python 2.6,并且以Python3.0编写的软件必须是冻结二进制文件。

有什么想法吗?

提前感谢

1个回答

1

我会尝试您建议的2to3端口。对于许多事情,它运作得相当不错。但像suds这样的东西转换仍需要一两天的工作时间。


我不认为这个解决方案会起作用,2to3旨在进行简单的转换,例如打印语句,异常,绝对导入等。否则,我猜测一个适用于py3k的SOAP客户端将会发布。你同意吗? - Eduardo Coelho
@Eduardo:我不这么认为。我见过一些Python模块(包括一些相当复杂的模块)明确指出他们的官方迁移机制是确保2to3在他们的代码库上能够正常运行。你可以注意到2to3的文档(http://docs.python.org/library/2to3.html)明确指出:“标准库包含了一套丰富的修复程序,几乎可以处理所有的代码。”。 - Nicholas Knight
2to3 对于许多代码库来说效果非常好。它失效的地方是作者试图过于聪明,对边缘情况进行奇怪的使用。如果代码以简单、Pythonic 的风格编写,2to3 通常可以完成大部分工作。 - Paul McMillan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接