Импорт подключаемых приложений django из подкаталога проекта

У меня есть некоторая структура проекта Django:

PROJECT
--APPS
----Profile
----...
--PLUGINS
----ENDLESS_PAGINATION
----DJANGO_SUBDOMAINS
----...

И например: в файле ENDLESS_PAGINATION файл models.py импортируется:

from endless_pagination import ...

что не может быть сделано.

ImportError: нет модуля с именем endless_pagination

Это работает только тогда, когда у меня есть эта структура:

PROJECT
--DJANGO_SUBDOMAINS
--ENDLESS_PAGINATION
--APPS
----Profile
----...

Но я предпочитаю первый и не люблю менять импорт плагинов. Пожалуйста помоги!

1 ответ

Вы можете сделать это, поместив каталог PLUGINS в вашу PYTHONPATH.

В вашем settings.py добавьте:

settings.py

import os, sys
PROJECT_ROOT = os.path.dirname(os.path.dirname(__file__))
sys.path.append(os.path.join(PROJECT_ROOT, 'APPS'))
sys.path.append(os.path.join(PROJECT_ROOT, 'PLUGINS'))

После этого вы можете ссылаться на модули в приложениях или плагинах без необходимости "приложения". или "плагины". префикс.

Макет PROJECT_ROOT предназначен для django 1.4 или новее, если вы используете django 1.3 или ниже, вы, вероятно, сделаете это PROJECT_ROOT = os.path.dirname(__file__),

Другие вопросы по тегам