我希望能够从项目中的应用程序导入内容,而无需参考我的项目名称。
我的文件夹结构是这样的;我有一个名为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
答案 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 *