Люди обычно устанавливают переменную __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. Веселись!