Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 谷歌应用程序引擎&x2B;在project=ImportError中具有多个应用程序的Django_Python_Django_Google App Engine - Fatal编程技术网

Python 谷歌应用程序引擎&x2B;在project=ImportError中具有多个应用程序的Django

Python 谷歌应用程序引擎&x2B;在project=ImportError中具有多个应用程序的Django,python,django,google-app-engine,Python,Django,Google App Engine,我正在尝试让“Hello World”Django 1.5应用程序与Google应用程序引擎一起工作。如果我的目录结构是这样的,那么一切都能完美地工作: . | ____myproj | |______init__.py | |____app.yaml | |____settings.py | |____urls.py | |____views.py | |____wsgi.py |____manage.py 但是,只要我向项目中添加一个新的“应用程序”(使用manage.py startap

我正在尝试让“Hello World”Django 1.5应用程序与Google应用程序引擎一起工作。如果我的目录结构是这样的,那么一切都能完美地工作:

.
| ____myproj
| |______init__.py
| |____app.yaml
| |____settings.py
| |____urls.py
| |____views.py
| |____wsgi.py
|____manage.py
但是,只要我向项目中添加一个新的“应用程序”(使用
manage.py startapp app1
),我就开始收到导入程序

这是我想要的理想结构:

.
|____app1
| |______init__.py
| |____admin.py
| |____models.py
| |____tests.py
| |____views.py
|____myproj
| |______init__.py
| |____app.yaml
| |____settings.py
| |____urls.py
| |____views.py
| |____wsgi.py
|____manage.py
要启用“app1”,我将my settings.py中已安装的_应用修改为:

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app1',
)
请注意,我在已安装的应用程序中添加了“app1”。我一这么做,GAE就开始抱怨: 导入错误:没有名为app1的模块

我做错了什么?如果我尝试用纯Django(而不是AppEngine)运行应用程序,一切都很好。但如果我尝试用AppEngine运行它,它就不喜欢我添加到已安装应用程序中的“app1”。从已安装的应用程序中删除该行将使所有内容重新运行,AppEngine中不会出现错误


注意:my PYTHONPATH有“/Users/mel/Sites/myproj/myproj”,后面是所有标准的google应用程序引擎路径。

这不是django项目通常的组织方式

现在,你的应用程序正在项目中运行。相反,他们应该生活在一起

假设您的项目名为
proj
,而您的应用程序名为
app
,则目录层应该是这样的:

.
├── manage.py
├── app
│   ├── __init__.py
│   ├── admin.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
└── proj
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

我自己解决了!这原来是我的配置错误。如果Django项目包含多个应用程序,则app.yaml文件需要位于项目目录的“外部”。换句话说,app.yaml文件需要放在
manage.py
旁边,而不是
settings.py
旁边。这样,项目中的所有应用程序都将自动包含在PYTHONPATH中

注意:您可能还需要在app.yaml中添加以下两行:

env_variables:
    DJANGO_SETTINGS_MODULE: 'myproj.settings'

这就是我的目录的组织方式。我想你误解了我问题的结构。@melsam我不这么认为。你的应用程序文件夹不是位于你的
manage.py
文件旁边,而是位于你的
settings.py
文件旁边。如果这不正确,您应该修复问题中的缩进(或使用
tree
生成布局,使其更清晰)。@melsa更清晰:
app1
应该位于
myproject
旁边,而不是下方。我已使用tree命令更新了问题中的项目结构。问题仍然悬而未决……为什么谷歌应用程序引擎抱怨安装的应用程序中的“app1”@melsam你能尝试获取你的
PYTHONPATH
sys.path
)吗?