2016-02-02 5 views
0

Я бегу python Repl, я могу запустить это:Объект python 'module' не имеет атрибута 'declare_namespace'?

from ipin.rpc.client_factory import client_factory 

, но когда я пишу это в файл, а затем запустить, я получил сообщение об ошибке, как follw:

Traceback (most recent call last): 
    File "/tmp/parser.py", line 3, in <module> 
    from ipin.rpc.client_factory.client_factory import ClientFactory 
    File "build/bdist.linux-x86_64/egg/ipin/__init__.py", line 1, in <module> 
    File "/home/ipin/anaconda2/lib/python2.7/site-packages/setuptools-18.5-py2.7.egg/pkg_resources/__init__.py", line 83, in <module> 
    File "/tmp/parser.py", line 3, in <module> 
    from ipin.rpc.client_factory.client_factory import ClientFactory 
    File "build/bdist.linux-x86_64/egg/ipin/rpc/__init__.py", line 1, in <module> 
AttributeError: 'module' object has no attribute 'declare_namespace' 
+0

Можете ли вы показать полный след исключения? Какой модуль проверяется для этого имени? – Blckknght

+0

@Blckknght, конечно – roger

ответ

1

Ваш TRACEBACK, это выглядит мне нравится ваш код в модуле с именем parser.py, который также является именем модуля, используемого внутри пакета ipin. Ваш модуль скрывает внутренний модуль, поэтому, когда другая часть пакета пытается получить объект declare_namespace с parser, он терпит неудачу.

Переименование вашей программы чем-то иным, чем parser должно обойти проблему, но на самом деле это не ваша вина. Реальное исправление заключается в том, что пакет не использует относительный импорт, который может быть затенен таким образом (Python 3 не позволяет использовать неявные относительные импорты для этой цели).

Смежные вопросы