2010-08-23 55 views
4

我希望能够从我的项目中的应用程序中导入东西,而无需参考我的项目名称。如何在我的PYTHONPATH中包含Django应用程序?

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

djangoproject1,应用程序和我所有的应用程序都有一个空的“__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', 'APP 2',

但没有任何工程。每当我尝试做:

from app1 import * 

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

回答

1

好的,所以我通过在项目属性下通过eclipse将应用程序文件夹添加到PYTHONPATH中来工作。这只是日食而已?我不确定当我尝试部署网站时这将如何工作。你们有什么感想?

+2

啊。这解释了事情。如果你添加到'settings.py'并且不执行'shell',你的'PYTHONPATH'不会改变。如果您希望应用程序在不使用'shell'的情况下是可导入的,那么您将不得不将其添加到_system variable_'PYTHONPATH'中。您可以通过在生产环境中通过settings.py添加应用程序来逃脱。 – 2010-08-23 17:51:37

+0

好的,非常感谢,所以现在通过Eclipse进行添加对于开发是很好的,只要我在settings.py中保留该代码,当我部署它时,它也应该可以正常工作。 – JPC 2010-08-23 18:11:01

0

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

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

更新

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

+0

1 'C:\\ \\用户\\ jec23我的Java项目\\ \\ djangoproject1 SRC \\ \\ djangoproject1应用'这是相关的sys.path条目。 2.是的,那是。 – JPC 2010-08-23 17:28:16

0

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

app1, app2, app3 

使用

from app1 import * 
相关问题