ModuleNotFoundError: нет модуля с именем «версия» - PullRequest
0 голосов
/ 07 января 2020

Я использую Python 3 вместе с библиотекой SOAPpy вместе с моим кодом. Я продолжаю получать ошибку "ModuleNotFoundError: No module named 'version'" при попытке запустить мой код. Ошибка исходит из указанной строки c в библиотеке:

from version import __version__

Как исправить ошибку?

Ответы [ 2 ]

0 голосов
/ 07 января 2020

Люди обычно устанавливают переменную __version__ в модуле, чтобы сделать его доступным для просмотра, у него даже есть PEP !

Я не уверен, какая строка вы имеете в виду, но много с таким же инкриминирующим импортом в пакете SOAPpy.

Вы можете увидеть здесь , что пакет действительно имеет модуль version определение переменной __version__. Я не знаю, как вы включаете этот пакет в свой проект, но я объясню кое-что об импорте, вы можете прочитать больше здесь .

У инкриминирующей строки может быть две альтернативы

from .version import __version__ # relative import

from SOAPpy.version import __version__ # absolute import

Вы можете прочитать их как «пути», первый файл version.py в текущем каталоге, второй файл version.py в каталоге SOAPpy.

Они и хорошо, но иногда повторять 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. Веселись!

0 голосов
/ 07 января 2020

SOAPpy ( pypy ) представляется устаревшей библиотекой, предназначенной для python2, поэтому часть кода в библиотеке выдает эти ошибки. Возможно, вам повезет больше, если использовать Zeep - современный SOAP python3 совместимый клиент.

...