首页 > 解决方案 > suds 在 python3.8 中失败

问题描述

目前我将我的自动化代码从 python 2.7.9 迁移到 python 3.8.1 我们有许多肥皂 api,它们使用 suds 0.4 版本和 python 2.7.9,它工作正常但是在迁移到 python 3.8.1 后它失败了我尝试使用 suds- py3 库它继续失败。

以下是我得到的错误

File "C:\Users\administrator\net.py", line 375, in __getattribute__
    if hasattr(attr, '__call__') and \
File "C:\Users\administrator\venv\lib\site-packages\suds\client.py", line 315, in __getattr__
    return getattr(port, name)
File "C:\Users\administrator\venv\lib\site-packages\suds\client.py", line 419, in __getattr__
return getattr(m, name)
File "C:\Users\administrator\venv\lib\site-packages\suds\client.py", line 510, in __getattr__
   return self[name]
File "C:\Users\administrator\venv\lib\site-packages\suds\client.py", line 523, in __getitem__
    raise MethodNotFound(qn)
suds.MethodNotFound: Method not found: 'cessService.chargePort.__call__'

我已经尝试过 suds-jurko 和 suds3 库,但仍然失败。

有一个简单的解决方法吗?

目前切换回 2.14 并继续。

标签: sudspython-3.8

解决方案


没有办法让泡沫起作用。

首先尝试对 suds 本身进行更改,由于 python 3 导致 suds 调用失败,我添加了 if else 所以如果 python 3 执行此操作,则 python 2 执行此操作,这样我取得的进展很小,但我最终做了很多许多模块的核心代码的变化,并且越来越不希望添加到我们的框架中。

切换到 zeep,大约需要 2-3 来理解,并且能够自动化所需的内容。Zeep 文档在某种程度上是好的,但不是最好的,它们有一些错误。

但是我们目前可以使用 Zeep 替换泡沫


推荐阅读