importterror:在Jinja2模板中没有名为_sqlite3的模块



我刚刚从Python 2.5迁移到2.7运行时,我编写的大多数服务器运行得很好。然而,我偶尔会看到这个奇怪的堆栈跟踪(为了简洁起见,我把它删掉了):

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))
有人知道是什么触发了导入错误吗?谢谢你,

Appengine使用sqlite作为数据存储,我打赌你安装在OSX上的python2.7缺少sqlite二进制库。做一个快速测试,启动一个python解释器(在appengine之外),并尝试导入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运行时

我有同样的问题,并解决了它。

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

卸载python,直接从python.org下载并安装2.7.5安装程序,问题已经解决。