模块未找到错误:没有名为'version'的模块



我正在使用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兼容客户端。

相关内容

  • 没有找到相关文章

最新更新