【问题标题】:How do I include a Django app in my PYTHONPATH?如何在我的 PYTHONPATH 中包含 Django 应用程序?
【发布时间】:2023-04-09 21:58:02
【问题描述】:

我希望能够从我的项目中的应用程序中导入内容,而无需参考我的项目名称。

我的文件夹结构是这样的;我有一个名为 djangoproject1 的项目,里面有一个名为 apps 的文件夹,然后我在该文件夹中有我的个人应用程序。

djangoproject1、apps 和我所有的应用程序都有一个空的“__init__.py”文件。

在我的 settings.py 文件中,我有以下代码:

import os
import sys
PROJECT_ROOT = os.path.dirname(__file__)
sys.path.insert(0, os.path.join(PROJECT_ROOT, "apps"))

我尝试了多种方式将我的应用添加到 INSTALLED_APPS:

'djangoproject1.apps.app1', 'djangoproject1.apps.app2',

'apps.app1', 'apps.app2',

'app1', 'app2',

但没有任何效果。每当我尝试这样做时:

from app1 import *

我遇到了一个未解决的导入错误。我正在使用最新版本的 eclipse 和 django

【问题讨论】:

    标签: django eclipse django-models django-forms


    【解决方案1】:

    您必须在 PYTHONPATH 中包含应用程序目录。确保在apps目录中没有__init__.py,因为它变成了一个包而不是“简单目录”。然后,包含在 settings.py 中

    app1, app2, app3
    

    使用

    from app1 import *
    

    【讨论】:

      【解决方案2】:

      声明sys.path.insert(0, os.path.join(PROJECT_ROOT, "apps")) 对我来说看起来不错。在此之后,您只需将app1 添加到INSTALLED_APPS 并且所有应该都可以工作。但显然他们没有工作。

      尝试以下操作: 1. 打印您的sys.path 并验证您的项目的app 目录是否在列表中。 2. 仔细检查您的 apps 文件夹中是否有 __init__.py

      更新

      好的。现在你可以启动 Django shell 并再次尝试导入吗?如果失败,请在此处发布堆栈跟踪。

      【讨论】:

      • 1. 'C:\\Users\\jec23\\My Java Projects\\djangoproject1\\src\\djangoproject1\\apps' 这是相关的 sys.path 条目。 2. 是的,就是这样。
      【解决方案3】:

      好的,所以我通过项目属性下的 Eclipse 将应用程序文件夹添加到 PYTHONPATH 来使其工作。只是这个日食吗?当我尝试部署站点时,我不确定这将如何工作。大家觉得呢?

      【讨论】:

      • 啊。这就解释了事情。如果你添加到settings.py 并且不执行shell,你的PYTHONPATH 不会改变。如果您希望在不使用 shell 的情况下导入应用程序,则必须将其添加到 系统变量 PYTHONPATH。您可以在生产环境中通过 settings.py 添加应用程序。
      • 好的,谢谢,就目前而言,通过 Eclipse 添加对于开发来说是很好的,只要我将该代码保留在 settings.py 中,当我部署它时,它也应该可以正常工作。跨度>
      猜你喜欢
      • 2020-03-17
      • 2016-05-23
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2018-09-24
      • 1970-01-01
      • 2010-10-08
      • 1970-01-01
      相关资源
      最近更新 更多