[英]Google App Engine + Django with multiple apps within project = ImportError
我正在嘗試使用與Google App Engine一起使用的“ Hello World” Django 1.5應用程序。 一切完美 ,如果我的目錄結構是這樣的:
.
| ____myproj
| |______init__.py
| |____app.yaml
| |____settings.py
| |____urls.py
| |____views.py
| |____wsgi.py
|____manage.py
但是,一旦我將新的“ app”添加到項目中(使用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',
)
注意,我在INSTALLED_APPS中添加了“ app1”。 我這樣做后,GAE便開始抱怨: ImportError:沒有名為app1的模塊 。
我究竟做錯了什么? 如果我嘗試使用純Django(而非AppEngine)運行應用程序,則一切正常。 但是,如果我嘗試使用AppEngine來運行它,它就不會像我添加到INSTALLED_APPS中的“ app1”一樣。 從INSTALLED_APPS中刪除該行將使一切再次運行,而AppEngine中沒有錯誤!
注意:我的PYTHONPATH具有“ / Users / mel / Sites / myproj / myproj”,后跟所有標准的Google App引擎路徑。
我自己解決了! 原來這是我的配置錯誤。 當您的Django項目具有多個應用程序時,app.yaml文件需要位於項目目錄“外部”。 換句話說,app.yaml文件必須位於manage.py
旁邊,而不是settings.py
旁邊。 這樣,您項目中的所有應用程序都會自動包含在PYTHONPATH中。
注意:您可能還需要在app.yaml中添加以下兩行:
env_variables:
DJANGO_SETTINGS_MODULE: 'myproj.settings'
通常,這不是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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.