【问题标题】:Import django pluggable apps from project subdirectory从项目子目录导入 django 可插拔应用程序
【发布时间】:2013-11-15 15:30:21
【问题描述】:

我有一些 Django 项目结构:

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

例如:在 ENDLESS_PAGINATION models.py 文件中导入:

from endless_pagination import ...

这是不可能的。

ImportError: 没有名为 never_pagination 的模块

只有当我有这个结构时它才有效:

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

但我更喜欢第一个并且不喜欢更改我的插件导入。请帮忙!

【问题讨论】:

  • 第三方应用中有这些插件吗?
  • 所有 Django 应用程序都处于同一级别,因此默认情况下,外部 Django 应用程序和您自己的应用程序之间没有区别。
  • 是的詹姆斯,麻省理工学院执照
  • 好的,西蒙。我会更改很多这些插件 - 并且会成为我工作的一部分。所以我会像其他人一样使用它们我的应用程序。我们可以结束这个问题,谢谢大家。

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


【解决方案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__)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-14
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多