2010-04-02 80 views
2

因此,我試圖從here谷歌應用程序引擎web應用框架使用django 1.1模板引擎。這是在Ubuntu Jaunty上,我確信PYTHONPATH包含Django-1.1.1的位置,但是當它嘗試執行下面的use_library()行時,我得到了'ImportError:No module named django'錯誤。再次,有人能幫助我嗎?我很難過。谷歌應用程序引擎(python):ImportError沒有名爲django的模塊

import os 
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' 
from google.appengine.dist import use_library 
use_library('django', '1.1') 

回答

0

@stallarida - 問題是.96作爲SDK默認發貨。最後我做了什麼,這是一個骯髒的黑客,但工作,是將appengine目錄中的django版本更新到1.1。工作得很好,需要在開發和生產之間調整一下。 具體而言,我必須在本地運行時註釋掉use_library('django', '1.1'),但在上傳我的應用時將其包含在內。

我確定有更好的解決方案,當我的Linux體驗改善時我會解決它。

3

想出了以下解決方案:

獲取的Django 1.1,並把它你的項目根目錄下。

向項目根文件夾中添加一個空文件「non_gae_indicator」。

添加Django和non_gae_indicator您app.yaml skip_files元素:

skip_files: 
- ^(.*/)?app\.yaml 
- ^(.*/)?app\.yml 
- ^(.*/)?index\.yaml 
- ^(.*/)?index\.yml 
- ^(.*/)?#.*# 
- ^(.*/)?.*~ 
- ^(.*/)?.*\.py[co] 
- ^(.*/)?.*/RCS/.* 
- ^(.*/)?\..* 
- ^(.*/)?.*\.bak$ 
- ^django 
- ^non_gae_indicator 

現在我們有一種方法來告訴我們是否在GAE-SDK下運行或生活 - 因爲non_gae_indicator將不可用時,我們生活。

所以在main.py,你可以這樣做:

if not os.path.exists(os.path.abspath(os.path.dirname(__file__)) + '/non_gae_indicator'): 
    # GAE 
    from google.appengine.dist import use_library 
    use_library('django', '1.1') 
else: 
    # Not GAE - Add our django package to the path 
    sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)) + '/django') 

你應該與--allow_skipped_files標誌運行本地SDK服務器(或者跳過的文件會出現檢查時他們不存在 - 的服務器控制檯給出了一個警告)。

相關問題