2013-11-15 3 views
0

У меня есть проект Django sturcture:Импорт Джанго вставных приложений из поддиректории проекта

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

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

from endless_pagination import ... 

, который не может быть сделано ,

ImportError: No module named endless_pagination

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

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

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

+0

Являются ли эти плагины в сторонних приложениях? –

+0

Все приложения Django будут на одном уровне, поэтому по умолчанию не существует различия между внешними приложениями Django и вашим собственным. –

+0

Да James, MIT licenese – user2721435

ответ

0

Вы можете сделать это, поместив каталог 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__).

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