没有名为 _sqlite3 的模块

238 投票
29 回答
432184 浏览
提问于 2025-04-15 13:17

我正在我的一台运行着Django应用的VPS上,使用的是Debian 5。当我运行一个示例应用时,出现了这个错误:

  File "/usr/local/lib/python2.5/site-packages/django/utils/importlib.py", line 35, in     import_module
    __import__(name)

  File "/usr/local/lib/python2.5/site-packages/django/db/backends/sqlite3/base.py", line 30, in <module>
    raise ImproperlyConfigured, "Error loading %s: %s" % (module, exc)

ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that     order): No module named _sqlite3

查看Python的安装情况,显示同样的错误:

Python 2.5.2 (r252:60911, May 12 2009, 07:46:31) 
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.5/sqlite3/__init__.py", line 24, in <module>
    from dbapi2 import *
  File "/usr/local/lib/python2.5/sqlite3/dbapi2.py", line 27, in <module>
    from _sqlite3 import *
ImportError: No module named _sqlite3
>>>

在网上查了一下,我了解到Python 2.5应该自带所有必要的SQLite封装。那么,我需要重新安装Python吗?还是有其他方法可以让这个模块正常工作?

29 个回答

87

我也遇到过同样的问题(在Ubuntu Lucid上从源代码编译python2.5),当我尝试import sqlite3时也出现了同样的错误。我从软件包管理器安装了libsqlite3-dev,然后重新编译了python2.5,这样导入就成功了。

101

我在Ubuntu上用Python 3.5和pyenv的时候也遇到了同样的问题。

如果你是通过pyenv来安装Python的,这个问题被列为常见构建问题之一。解决这个问题的方法是,先删除已经安装的Python版本,然后安装一些必要的依赖(在这个情况下是libsqlite3-dev),接着再用下面的命令重新安装Python版本:

pyenv install <python-version> 

如果需要的话,再重新创建虚拟环境。

279

看起来你的makefile没有包含合适的.so文件。你可以按照下面的步骤来解决这个问题:

  1. 安装sqlite-devel(在一些基于Debian的系统上是libsqlite3-dev
  2. 重新配置并编译Python,使用命令./configure --enable-loadable-sqlite-extensions && make && sudo make install

注意

这里的sudo make install命令会把这个Python版本设置为系统的标准版本,这可能会带来一些意想不到的后果。如果你在自己的工作站上运行这个命令,可能希望它和现有的Python版本并存,这可以通过使用sudo make altinstall来实现。

撰写回答