如何在PYTHONPATH中包含Django应用程序?

时间:2010-08-23 17:15:17

标签: django eclipse django-models django-forms

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

我的文件夹结构是这样的;我有一个名为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

3 个答案:

答案 0 :(得分:1)

好的,所以我通过在Project Properties下通过eclipse将apps文件夹添加到PYTHONPATH来实现它。这只是日食吗?当我尝试部署网站时,我不确定这是如何工作的。你们觉得怎么样?

答案 1 :(得分:0)

声明sys.path.insert(0, os.path.join(PROJECT_ROOT, "apps"))对我来说很合适。在此之后,您只需要将app1添加到INSTALLED_APPS应该的所有内容都可以。但显然他们没有工作。

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

<强>更新

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

答案 2 :(得分:0)

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

app1, app2, app3

使用

from app1 import *