2012-04-04 64 views
1

在Windows 7和最新的webpy上使用Python26。ImportError:沒有在Google App Engine上使用帶有Web.py DESPITE的模板命名模板已編譯模板

我複製了用於在GAE上設置Web.py的基本示例(http://webpy.appspot.com/),並遵循了編譯用於GAE的模板的說明(http://webpy.org/ cookbook/templates_on_gae),但這樣做後仍然有ImportError:No模塊命名模板。

要明確一點:有很多人有這個問題,解決方案是編譯模板。我做到了;仍然是同樣的錯誤。

我的實施在這裏:https://bitbucket.org/rhiaro/gae-tutorial(在webpyworld目錄中)。

我的主文件,code.py是:

from google.appengine.ext import db 
import web 

urls = (
'/', 'index', 
'/note', 'note', 
'/crash', 'crash' 
) 

render = web.template.render('templates/') 

class Note(db.Model): 
content = db.StringProperty(multiline=True) 
date = db.DateTimeProperty(auto_now_add=True) 

class index: 
def GET(self): 
    notes = db.GqlQuery("SELECT * FROM Note ORDER BY date DESC LIMIT 10") 
    return render.index(notes) 

class note: 
def POST(self): 
    i = web.input('content') 
    note = Note() 
    note.content = i.content 
    note.put() 
    return web.seeother('/') 

class crash: 
def GET(self): 
    import logging 
    logging.error('test') 
    crash 

app = web.application(urls, globals()) 

def main(): 
app.cgirun() 

if __name__ == '__main__': 
    main() 

編譯模板的指示,導致在模板文件夾的正確初始化__ __.py。但它仍然不會將其識別爲模塊。

輸出錯誤的最後一部分:

path\to\webpyworld\code.py in() 
8) 
9 
10 render = web.template.render('templates/') 
11 
12 class Note(db.Model): 
render undefined, web = <module 'web' from 'D:\gaeTut\webpyworld\web\__init__.pyc'>, web.template = <module 'web.template' from 'D:\gaeTut\webpyworld\web\template.py'>, web.template.render = <class web.template.GAE_Render> 
path\to\webpyworld\web\template.py in __init__(self=<web.template.GAE_Render instance>, loc='templates/', *a=(), **kw={}) 
1031   else: 
1032    name = loc.rstrip('/').replace('/', '.') 
1033    self.mod = __import__(name, None, None, ['x']) 
1034 
1035   self.mod.__dict__.update(kw.get('builtins', TEMPLATE_BUILTINS)) 
self = <web.template.GAE_Render instance>, self.mod undefined, builtin __import__ = <built-in function __import__>, name = 'templates', builtin None = None 

<type 'exceptions.ImportError'>: No module named templates 
    args = ('No module named templates',) 
    message = 'No module named templates' 
+0

您需要至少包含完整的堆棧跟蹤和導致它的代碼。 – 2012-04-05 09:23:02

+0

@NickJohnson:源代碼位於鏈接頂部的git存儲庫中,但完整的堆棧跟蹤仍然丟失 – KitB 2012-04-05 11:04:01

回答

1

你指定的模板/在app.yaml中一個static_dir。

這意味着它將不可用於應用程序代碼,但只會直接響應用戶對模板本身的直接請求。

+0

問題出在哪裏 - 謝謝! – rhiaro 2012-04-05 14:01:44