没有名为_sqlite3的模块

我试图在运行Debian 5的VPS上运行Django应用程序。当我运行一个演示应用程序时,它返回这个错误:

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,还是有另一种方法来启动这个模块?

我有同样的问题(从Ubuntu Lucid的源码构buildpython2.5 ),并import sqlite3抛出这个相同的例外。 我已经从包pipe理器安装libsqlite3-dev ,重新编译python2.5,然后导入工作。

看起来你的makefile没有包含相应的.so文件。 我用下面的步骤纠正了这个问题:

  1. 在一些基于Debian的系统上安装sqlite-devel (或libsqlite3-dev
  2. 使用./configure --enable-loadable-sqlite-extensions && make && sudo make install重新configuration和重新编译Python ./configure --enable-loadable-sqlite-extensions && make && sudo make install

这是我所做的工作。

我使用Python 2.7.5安装pythonbrew(这是使用点)。

我首先做了Zubair(上面)说的并且执行这个命令:

 sudo apt-get install libsqlite3-dev 

然后我运行这个命令:

 pip install pysqlite 

这解决了数据库问题,当我跑时我得到了确认:

 python manager.py syncdb 
  1. 安装sqlite-devel包:

    yum install sqlite-devel -y

  2. 从源代码重新编译python:

     ./configure make make altinstall 

我的_sqlite3.so位于/usr/lib/python2.5/lib-dynload/_sqlite3.so。 从你的path判断,你应该有文件/usr/local/lib/python2.5/lib-dynload/_sqlite3.so。

尝试以下操作:

 find /usr/local -name _sqlite3.so 

如果找不到该文件,则说明您的Python安装可能有问题。 如果是,请确保安装的path位于Pythonpath中。 在Python shell中,

 import sys print sys.path 

在我的情况下,/usr/lib/python2.5/lib-dynload是在列表中,所以它能够find/usr/lib/python2.5/lib-dynload/_sqlite3.so。

我最近尝试在我的Ubuntu 11.04桌面上安装python 2.6.7以进行一些开发工作。 遇到类似的问题,这个线程。 我受到损害以解决它:

  1. 调整setup.py文件以包含正确的sqlite开发path。 来自setup.py的代码片段:

     def sqlite_incdir: sqlite_dirs_to_check = [ os.path.join(sqlite_incdir, '..', 'lib64'), os.path.join(sqlite_incdir, '..', 'lib'), os.path.join(sqlite_incdir, '..', '..', 'lib64'), os.path.join(sqlite_incdir, '..', '..', 'lib'), '/usr/lib/x86_64-linux-gnu/' ] 

    与我添加的位是'/ usr / lib / x86_64-linux-gnu /'。

  2. 运行后,我没有得到任何警告说,没有build立的SQLite支持(即,它构build正确:P),但运行make install ,sqlite3仍然没有导入具有相同的“ ImportError: No module named _sqlite3" whe running "import sqlite3 ”。

    所以,这个库被编译了,但是没有移动到正确的安装path,所以我复制了.so文件( cp /usr/src/python/Python-2.6.7/build/lib.linux-x86_64-2.6/_sqlite3.so /usr/local/python-2.6.7/lib/python2.6/sqlite3/ – 这些是我的构buildpath,你可能需要调整它们到你的设置)。

瞧! SQLite3支持现在工作。

在使用pyenv时,我在Ubuntu上遇到了与Python 3.5相同的问题。

如果你正在使用pyenv安装python,它被列为常见的构build问题之一 。 为了解决这个问题,删除已安装的python版本,安装需求(对于这个特殊情况libsqlite3-dev ),然后重新安装python版本。

这在Redhat Centos 6.5中适用于我:

 yum install sqlite-devel pip install pysqlite 

我在FreeBSD 8.1中遇到这个问题:

 - No module named _sqlite3 - 

这是通过站在港口———-解决

 /usr/ports/databases/py-sqlite3 

之后可以看到:

 OK ---------- '>>>' import sqlite3 ----- '>>>' sqlite3.apilevel ----- '2.0' 

检查你的settings.py文件。 你不只是写数据库引擎的“sqlite”而不是“sqlite3”?

我发现很多人遇到这个问题,因为我自己的vps(cent os 7 x64)上的多版本的Python,我用这种方式解决了这个问题:

  1. find文件“_sqlite3.so”

     find / -name _sqlite3.so 

    out: /usr/lib64/python2.7/lib-dynload/_sqlite3.so

  2. find你想使用的Python标准库的目录,

    对我来说/usr/local/lib/python3.6/lib-dynload

  3. 复制文件:

     cp /usr/lib64/python2.7/lib-dynload/_sqlite3.so /usr/local/lib/python3.6/lib-dynload 

最后,一切都会好的。

是python-pysqlite2软件包安装?

 sudo apt-get install python-pysqlite2 

你必须在centos或红帽,并自己编译python,这是python的bug在你的python源代码目录中执行此操作,并执行此操作

 curl -sk https://gist.github.com/msabramo/2727063/raw/59ea097a1f4c6f114c32f7743308a061698b17fd/gistfile1.diff | patch -p1 

我也有这个问题的Django的1.9,python3.5和Ubuntu的14.04我刚刚在每个命令之前添加sudo,这就解决了我的问题的例子

 sudo python manage.py migrate sudo python manage.py runserver 

下载sqlite3:

 wget http://www.sqlite.org/2016/sqlite-autoconf-3150000.tar.gz 

按照以下步骤进行安装:

 $tar xvfz sqlite-autoconf-3071502.tar.gz $cd sqlite-autoconf-3071502 $./configure --prefix=/usr/local $make install 

您需要在您的python环境中安装pysqlite :

  $ pip install pysqlite