我正在尝试让“Hello World”Django 1.5 应用程序与 Google App Engine 一起使用。如果我的目录结构如下所示,一切都会完美:
.
| ____myproj
| |______init__.py
| |____app.yaml
| |____settings.py
| |____urls.py
| |____views.py
| |____wsgi.py
|____manage.py
但是,一旦我向项目添加新的“应用程序”(使用 manage.py startapp app1
),我就开始收到 ImportErrors。
这是我想要的理想结构:
.
|____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”,我将 settings.py 中的 INSTALLED_APPS 修改为:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app1',
)
请注意,我将“app1”添加到了 INSTALLED_APPS 中。我一这么做,GAE 就开始提示: 导入错误:没有名为 app1 的模块。
我做错了什么?如果我尝试使用纯 Django(而不是 AppEngine)运行应用程序,一切都很好。但是,如果我尝试使用 AppEngine 运行它,它不喜欢我添加到 INSTALLED_APPS 中的“app1”。从 INSTALLED_APPS 中删除该行会使一切再次运行,AppEngine 中不会出现错误!
注意:我的 PYTHONPATH 包含“/Users/mel/Sites/myproj/myproj”,后跟所有标准 Google 应用引擎路径。
最佳答案
我自己解决了!事实证明这是我的配置错误。当您的 Django 项目包含多个应用程序时,app.yaml 文件需要位于项目目录“外部”。换句话说,app.yaml 文件需要位于 manage.py
旁边,而不是位于 settings.py
旁边。这样,项目中的所有应用程序都会自动包含在 PYTHONPATH 中。
注意:您可能还需要将以下两行添加到 app.yaml:
env_variables:
DJANGO_SETTINGS_MODULE: 'myproj.settings'
关于python - Google App Engine + Django 在项目中有多个应用程序 = ImportError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20456997/