2016-01-29 6 views
1

У меня есть проблема:Ошибка с импортом Python

Я использую этот пакет: https://github.com/ulule/django-badgify

Он прекрасно работает, но теперь мне нужно создать модель пользовательского Badge. Я сделал все, как и в документации:

main.models.py:

from badgify.models.base.badge import Badge as BaseBadge 

class GuidaBadge(BaseBadge): 
    class Meta(BaseBadge.Meta): 
     abstract = False 

settings.py:

BADGIFY_BADGE_MODEL = "main.models.GuidaBadge" 

Но это может вызвать ошибки:

File "D:\virtenvs\codeguida\codeguida\main\models.py", line 11, in <module> 
    from badgify.models.base.badge import Badge as BaseBadge 
    File "D:\virtenvs\codeguida\lib\site-packages\badgify\models\__init__.py", line 8, in <module> 
    Badge = load_class(settings.BADGE_MODEL) 
    File "D:\virtenvs\codeguida\lib\site-packages\badgify\utils.py", line 88, in load_class 
    raise exceptions.ImproperlyConfigured(txt) 
django.core.exceptions.ImproperlyConfigured: Backend module "main.models" does not define a "GuidaBadge" class. 

Это is, https://github.com/ulule/django-badgify/blob/master/badgify/utils.py#L79

Кажется, что Python не может найти класс GuidaBadge. Так что я пытался использовать функцию load_class() в оболочке - это возвращать правильный класс ...

Я думаю, что причина ошибки, таким образом:

Как мы можем видеть в TraceBack, во-первых:

File "D:\virtenvs\codeguida\codeguida\main\models.py", line 11, in <module> 
     from badgify.models.base.badge import Badge as BaseBadge 

Программа просит питона импортировать Badge класс из пакета badgify

Затем Python попытался импортировать его, и сталкиваются с

File "D:\virtenvs\codeguida\lib\site-packages\badgify\models\__init__.py", line 8, in <module> 
     Badge = load_class(settings.BADGE_MODEL) 

Здесь программа запрашивает python для загрузки_класса из строки (которая хранится в настройках, например. 'main.models.GuidaBadge')

Но Python еще не выполнил эту часть моделей. И это вызывает ошибку, что в «main.models» нет класса «GuidaBadge».

Я прав?

Как это исправить?

+0

Это может быть круговой импорт. Посмотрите, что вы импортируете в настройках, чтобы увидеть, есть ли у вас какие-либо круговые зависимости. –

+0

Можете объяснить еще кое-что? Пожалуйста? –

ответ

1

не делает

from badgify.models.base.badge import Badge as BaseBadge 

вместо делать

import badgify.models.base.badge 

class GuidaBadge(badgify.models.base.badge.Badge): 
    class Meta(BaseBadge.Meta): 
     abstract = False 

«от» и «как» импорт возникают проблемы с округлостью из-за изменения пространства имен (из импортируемого модуля не распознаются как оригинал потому что он импортируется как другое пространство имен).

+0

Это не работает.Причина той же ошибки: –

1

main.models.py:

Ваш файл с именем, что так или это models.py, который живет в main каталоге? Если первый, замените его на второй.

Проверьте также, что у вас есть файл __init__.py в главном каталоге и что ваш основной каталог находится в пути python.

+0

Да, второй вариант .. main/models.py. Да, у меня есть '__init __. Py' в main .. –

+0

Но что такое« путь python »? –

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