簡體   English   中英

Google App Engine + Django,項目中包含多個應用程序= ImportError

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM