Импорт подключаемых приложений 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__)
,