2013-04-23 45 views
0

我刚刚从Python 2.5迁移到2.7运行时,并且我写的大多数服务器运行良好。但是我看到occassionaly这个奇怪的堆栈跟踪(我砍死下来为了简洁):ImportError:Jinja2模板中没有名为_sqlite3的模块

ERROR 2013-04-23 10:40:15,598 wsgi.py:235] 
Traceback (most recent call last): 
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/jinja2-2.6/jinja2/environment.py", line 894, in render 
return self.environment.handle_exception(exc_info, True) 
File "templates/querystart.html", line 30, in top-level template code 
{% for session in sessions %} 
ImportError: No module named _sqlite3 

我没有进口sqlite3的自己,我不依赖于它。那调用它的代码非常简单(对事物的哑面也许接壤):

class UserIdQuery(BaseHandler): 
def get(self): 
    sessionQuery=Session.all().order("userid") 
    template_values = { 
     'sessions': sessionQuery, 
    } 
    self.render_template('querystart.html',**template_values) 

上面简单地延伸到下方(从一个非常有用的迁移教程拍摄)

class BaseHandler(webapp2.RequestHandler): 
@webapp2.cached_property 
def jinja2(self): 
    return jinja2.get_jinja2(app=self.app) 

def render_template(self, filename, **template_args): 
    self.response.write(self.jinja2.render_template(filename, **template_args)) 

任何人都知道什么可能触发导入错误?谢谢,

回答

1

Appengine使用sqlite的数据存储,我的赌注是你的python2.7安装在OSX上缺少sqlite二进制库。做一个快速测试,启动(外面的AppEngine)的Python解释器,并尝试导入sqlite3的

$ python 
Python 2.7.3 (default, Sep 26 2012, 21:53:58) 
[GCC 4.7.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import sqlite3 
>>> 

如果失败了,你知道你已经安装了一个不完整的2.7运行时。

+0

谢谢,我试过了,在Sublime Text 2的SublimeREPL和iterm中,并且导入sqlite3似乎工作正常。从那以后,我已经安装了sqlite3,尽管没有重启服务器。这是一个很好的提示,但最好知道是什么导致ImportError出现在第一位。 – personalnadir 2013-04-23 13:14:08

+0

hmm sqlite通常作为标准python2.7运行时的一部分安装,不需要单独安装。那么在Windows和Linux下,我不知道OSX。 – 2013-04-23 13:39:41

0

我遇到了同样的问题并修复了它。

我正在运行从Ninite.com安装的python 2.7.3。

卸载python,下载并安装2.7.5安装程序直接从python.org和问题已消失。

相关问题