2013-04-08 66 views
1

我在運行GAE中最簡單的django項目時遇到了問題。Google App Engine中託管的django項目的settings.py位置

運行django-admin startproject myproj(從谷歌SDK使用Django 1.4)後,文件夾層次結構看起來像:

 
+ myproj (root folder of project) 
    - manage.py 
    + myproj (a sub folder for the project files) 
    - __init__.py 
    - settings.py 
    - urls.py 
    - wsgi.py 

我那麼平常的app.yaml 添加到根文件夾 - 那就是同一個文件夾manage.py在哪裏。

application: u-pavarotti 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: true 

libraries: 
- name: django 
    version: "1.4" 

builtins: 
- django_wsgi: on 

syncdb,dbshel​​l,shell ...很好用。即使manage.py runserver作品文件。但是,嘗試運行dev_appserver失敗。我得到的例外是:

ImportError: Could not import settings 'settings'

好,考慮看看谷歌/ AppEngine上/轉/ Django的/主(其中django_wsgi基本上設置一個URL處理程序。*的google.appengine.ext.django.main.app)是看來,它期待在python路徑中查找設置。但沒有做任何事情,導入的模塊是myproj.settings(因爲myproj不在路徑中)。

現在,將.../myproj/myproj(較低文件夾)添加到PYTHONPATH可以解決開發計算機上的所有問題,但由於我無法控制GAE部署中的搜索路徑,因此此解決方案無法工作。

我可以移動所有文件,或只是settings.py到上層myproj,或移動app.yaml(有點相同的東西),但它需要各種更改形式的默認genereated settings.py - 我不'這是要走的路。或者,我可以編寫我自己的處理程序,它將實例化django.core.handlers.wsge.WSGIHandler(舊的教程用於這樣做) - 再次,似乎與至少應用程序的「內置」屬性的創建者的意圖。 YAML。

我想知道其他人是如何解決這個問題的,什麼是正確的做法。

回答

3

可以聲明在app.yaml中的環境變量DJANGO_SETTINGS_MODULE

env_variables: 
    DJANGO_SETTINGS_MODULE: 'myproj.settings' 
+0

很不錯。謝謝。 – Uri 2013-04-08 13:08:23

+0

感謝您節省我的時間! – 2014-05-25 15:21:18

相關問題