python - Google App Engine + Django 在项目中有多个应用程序 = ImportError

标签 python django google-app-engine

我正在尝试让“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/

相关文章:

python - 部署Django,supervisorctl异常终止

django - 将 Django 部署到服务器

python - Google App Engine - 导入我自己的源模块(多个文件)

Python:如何合并两个列表,如带有 for 循环的 zip

django intcomma 不适用于本地化

python - isinstance() 因未知原因返回 False

google-app-engine - Appengine 上的 Map-Reduce 状态?

python - 尝试对两个数组求和

Python 四位数计数器

python - 由于 pymssql 的未知原因,连接到数据库失败