2012-04-28 7 views
1

Я пытаюсь импортировать модуль использовать несколько методов у него есть, и по какой-то причине вдруг я получаю ошибку:Импорт модуля, AttributeError

AttributeError: 'module' object has no attribute 'getFoobar' 

Конечно у меня есть метод getFoobar в модуле, который я импортирую. Я использую его в других файлах без проблем. Это никогда не случалось раньше.

Я уже пытался удалить все .pyc-файлы, я проверил, что у меня есть __init__.py в той же папке, и нет взаимного импорта.

Я искал SO и Google, и никакое решение не устранило проблему для меня. Любые идеи о том, что может происходить? Что еще я могу попробовать?

Спасибо!

+3

Обычная проблема здесь: конфликт имени модуля: 'import gronk' получает вам предполагаемую версию gronk, пока какая-либо другая версия не появится ранее в' sys.path'. Попробуйте распечатать атрибут '__file__' модуля, чтобы узнать, какой из них вы получаете. – torek

+0

Я не думал об этом, но это не так. По-видимому, я должен был быстро отказаться от взаимного импорта. Я думал, что, поскольку A.py импортирует B.py, но B.py не импортирует A.py, тогда взаимного импорта не было. Я забыл проверить, являются ли другие модули, которые я импортирую, причиной взаимности, и они были (по-видимому)! Во всяком случае, теперь это исправлено! Спасибо, я ценю быстрый ответ. –

ответ

0

Вы пытаетесь получить доступ к бесплатной функции уровня модуля или к методу? Это имеет большое значение. Если у вас есть что-то вроде этого:

class foo: 
    def bar1(): 
     pass 
def bar2(): 
    pass 

сохраненную в файле «foo.py», то вам нужно делать разные вещи, чтобы позвонить каждый из них, как это:

import foo 
f = foo.foo() 
f.bar1() 
foo.bar2() 

Как вы можете видеть , вы можете напрямую обращаться к bar2 из модуля foo, так как он находится вне класса foo, но вам нужно объявить экземпляр класса foo для вызова bar1. Я предполагаю, что вы просто пытались вызвать bar1 из модуля foo, так как это обычная ошибка начинающих, особенно если вы перешли с Java.

+0

Видимо, я прищурился, проверяя взаимный импорт. Подробнее см. Комментарий выше. Спасибо, в любом случае, chameco! Может быть, это поможет другим. –

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