我正在使用Python 3和SOAPpy库以及我的代码。我在尝试运行代码时不断收到"ModuleNotFoundError: No module named 'version'
"错误。错误来自库中的此特定行:
from version import __version__
如何修复此错误?
人们通常在模块中设置变量__version__
以使其可用于 全世界都要检查,它甚至有一个PEP!
我不确定你指的是哪一行,但在 SOAPpy 包中有很多具有相同的有罪进口。
你可以在这里看到,包确实有一个定义__version__
变量的version
模块。我不知道您如何将此包包含在您的项目中,但我会解释一些有关导入的内容,您可以在此处阅读更多内容。
有罪线可以有两种选择
from .version import __version__ # relative import
from SOAPpy.version import __version__ # absolute import
您可以将它们读取为"路径",第一个是当前目录中的 version.py 文件,第二个是 SOAPpy 目录中的 version.py 文件。
它们都很好,但有时到处重复 SOAPpy 工作量太大。
让我们修复该行以进行相对导入
diff --git a/SOAPpy/__init__.py b/SOAPpy/__init__.py
index 0e039f8..832a560 100644
--- a/SOAPpy/__init__.py
+++ b/SOAPpy/__init__.py
@@ -1,15 +1,15 @@
ident = '$Id: __init__.py,v 1.9 2004/01/31 04:20:06 warnes Exp $'
-from version import __version__
+from .version import __version__
-from Client import *
-from Config import *
-from Errors import *
-from NS import *
-from Parser import *
-from SOAPBuilder import *
-from Server import *
-from Types import *
-from Utilities import *
+from .Client import *
+from .Config import *
+from .Errors import *
+from .NS import *
+from .Parser import *
+from .SOAPBuilder import *
+from .Server import *
+from .Types import *
+from .Utilities import *
import wstools
import WSDL
事实上,现在如果我运行python setup.py install
我会收到不同的错误
Traceback (most recent call last):
File "setup.py", line 8, in <module>
from SOAPpy.version import __version__
File "/home/edoput/repo/SOAPpy/SOAPpy/__init__.py", line 5, in <module>
from .Client import *
File "/home/edoput/repo/SOAPpy/SOAPpy/Client.py", line 95
raise IOError, "unsupported SOAP protocol"
^
SyntaxError: invalid syntax
因此,这个库尚未升级到使用 python3 确实可能是一个问题!
让我们改用python2,即使我们不应该。
virtualenv env --python=python2
source env/bin/activate
python setup.py install
现在一切都正确安装,这个库最近肯定没有更新,你仍然可以使用它,但你必须坚持使用 python 2.7。玩得愉快!
SOAPpy(pypy(似乎是一个用于python2的过时库,这就是为什么库中的某些代码会产生这些错误的原因。使用Zeep可能会有更好的运气 - 一个现代的SOAP python3兼容客户端。