我将Python3和SOAPpy库与我的代码结合使用。当我尝试运行我的代码时,我一直收到一个"ModuleNotFoundError: No module named 'version'
“错误。错误来自库中的以下特定行:
from version import __version__
我如何修复这个错误?
发布于 2020-01-08 03:11:55
人们通常在模块中设置变量__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。玩得开心!
https://stackoverflow.com/questions/59634273
复制相似问题