我将Python 3和SOAPpy库以及我的代码一起使用。尝试运行代码时,我始终收到“ ModuleNotFoundError: No module named 'version'
”错误。错误来自库中的此特定行:
from version import __version__
如何解决该错误?
答案 0 :(得分:0)
答案 1 :(得分:0)
人们通常在模块中设置变量__version__
,以使其可用于
要检查的世界,它甚至有PEP!
我不确定您所指的是哪一行,但是在SOAPpy包中有are many具有相同的导入含义。
您可以看到here,该软件包确实具有定义了version
变量的__version__
模块。我不知道您如何在您的项目中包括此软件包,但我将解释有关导入的内容,您可以阅读更多here。
判别行可以有两种选择
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,即使we should not。
virtualenv env --python=python2
source env/bin/activate
python setup.py install
现在一切都可以正确安装,该库最近肯定没有更新,您仍然可以使用它,但必须坚持使用python 2.7。玩得开心!