从项目子目录导入django可插拔应用程序

时间:2013-11-15 15:30:21

标签: python django importerror python-import django-apps

我有一些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 个答案:

答案 0 :(得分: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__)