没有名为_sqlite3的模块

时间:2009-07-31 04:21:03

标签: python django sqlite debian

我正在尝试在运行DjangoVPS上运行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,还是有其他方法可以启动并运行此模块?

23 个答案:

答案 0 :(得分:76)

您的makefile似乎没有包含相应的.so文件。您可以通过以下步骤更正此问题:

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

    注意

    sudo make install部分将python版本设置为系统范围的标准,这可能会产生不可预见的后果。如果您在工作站上运行此命令,您可能希望将现有的python一起安装,这可以通过sudo make altinstall来完成。

答案 1 :(得分:74)

我遇到了同样的问题(在Ubuntu Lucid上从源代码构建python2.5),import sqlite3引发了同样的异常。我已经从包管理器安装了libsqlite3-dev,重新编译了python2.5,然后导入了。

答案 2 :(得分:17)

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

如果您使用pyenv安装python,它会被列为common build problems之一。要解决此问题,请删除已安装的python版本,安装需求(针对此特定情况libsqlite3-dev),然后重新安装python版本。

答案 3 :(得分:17)

这就是我为了让它发挥作用所做的。

我正在使用安装了python 2.7.5的pythonbrew(使用pip)。

我首先做了Zubair(上图)所说的并运行了这个命令:

sudo apt-get install libsqlite3-dev

然后我运行了这个命令:

pip install pysqlite

这解决了数据库问题,我在运行时得到了确认:

python manager.py syncdb

答案 4 :(得分:11)

  1. 安装sqlite-devel包:

    yum install sqlite-devel -y

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

    ./configure
    make
    make altinstall
    

答案 5 :(得分:9)

我的_sqlite3.so位于/usr/lib/python2.5/lib-dynload/_sqlite3.so中。从你的路径来看,你应该有文件/usr/local/lib/python2.5/lib-dynload/_sqlite3.so。

尝试以下方法:

find /usr/local -name _sqlite3.so

如果找不到该文件,则Python安装可能出错。如果是,请确保它安装的路径位于Python路径中。在Python shell中,

import sys
print sys.path

就我而言,/ usr / lib / python2.5 / lib-dynload在列表中,因此它能够找到/usr/lib/python2.5/lib-dynload/_sqlite3.so。

答案 6 :(得分:7)

我最近尝试在我的Ubuntu 11.04桌面上安装python 2.6.7以进行一些开发工作。遇到类似的问题到这个线程。我通过以下方式修改它:

  1. 调整setup.py文件以包含正确的sqlite dev路径。来自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. 运行make之后我没有得到任何警告说没有构建sqlite支持(即,它构建正确:P),但是在运行make install之后,sqlite3仍然没有导入相同的“ ImportError: No module named _sqlite3" whe running "import sqlite3”。

    因此,库已编译,但未移至正确的安装路径,因此我复制了.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/ - 这些是我的构建路径,您可能需要将它们调整为你的设置)。

  3. 瞧! SQLite3支持现在可以使用。

答案 7 :(得分:7)

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

  1. 找到文件&#34; _sqlite3.so&#34;

    find / -name _sqlite3.so
    

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

  2. 找到你想要使用的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
    
  4. 最后,一切都会好的。

答案 8 :(得分:5)

这在Redhat Centos 6.5中对我有用:

yum install sqlite-devel
pip install pysqlite

答案 9 :(得分:2)

我在FreeBSD 8.1中遇到了问题:

- No module named _sqlite3 -

通过端口----------

解决
/usr/ports/databases/py-sqlite3

之后可以看到:

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

答案 10 :(得分:2)

对于具有Redhat 7或Centos 7的Python 3.7.8。

  • 安装sqlite-devel
$ yum install sqlite-devel
  • 编译并安装具有 sqllite扩展
  • 的Python3
$ ./configure --enable-optimizations --enable-loadable-sqlite-extensions
$ make install

答案 11 :(得分:2)

令我感到失望的是,这个问题一直存在到今天。因为我最近一直在尝试在CentOS 8.1上安装vCD CLI,所以在尝试运行它时出现相同的错误,对此我表示欢迎。在我的情况下,我必须解决的方法如下:

  • 使用适当的前缀从头开始安装SQLite3
  • 清理我的Python安装程序
  • 运行Make install重新安装Python

我一直在这样做,以创建有关如何安装vCD CLI和VMware Container Service Extension的不同博客。我最终捕获了用于解决该问题的步骤,并将其放在单独的博客文章中:

http://www.virtualizationteam.com/cloud/running-vcd-cli-fail-with-the-following-error-modulenotfounderror-no-module-named-_sqlite3.html

我希望这会有所帮助,因为尽管上面的提示帮助我找到了解决方案,但我不得不将其中的一些结合起来并进行一些修改。

答案 12 :(得分:2)

为在此页面上搜索Windows操作系统解决方案的所有人提供答案:

如果尚未安装pysqlite3或db-sqlite3,则必须安装。您可以使用以下安装。

  • pip安装pysqlite3
  • pip安装db-sqlite3

对我来说,问题出在sqlite3的DLL文件中。

解决方案:

  1. 我从sqlite site获取了DLL文件。这可能会根据您的 版本的python安装。

  2. 我将其粘贴到的DLL目录中 环保对我来说,它是“ C:\ Anaconda \ Lib \ DLLs”,但请检查您的。 Before and After placing DLL file

答案 13 :(得分:2)

我的python是从源代码构建的,原因是在exec配置时缺少选项 python版本:3.7.4

./configure --enable-loadable-sqlite-extensions --enable-optimizations
make
make install

固定

答案 14 :(得分:1)

sqlite3随Python一起提供。我也遇到了同样的问题,我刚刚卸载了python3.6,然后又重新安装了它。

卸载现有的python:

sudo apt-get remove --purge python3.6

安装python3.6:

sudo apt install build-essential checkinstall
sudo apt install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
tar xvf Python-3.6.0.tar.xz
cd Python-3.6.0/
./configure
sudo make altinstall

答案 15 :(得分:1)

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

答案 16 :(得分:0)

我遇到了同样的问题,上面的回答没有对我有用 但现在我通过

修复了它

只需删除python.pipsqlite3并重新安装

即可
  1. sudo apt-get remove python.pip
  2. sudo apt-get remove sqlite3
  3. 现在再次安装

    1. sudo apt-get install python.pip
    2. sudo apt-get install sqlite3
    3. 在我的情况下,再次安装sqlite3时显示出一些错误 然后我输入了

      1. sqlite3
      2. 终端上的

        检查它是否已被删除,并开始解压缩

        安装sqlite3后 fireup终端并写下

        1. sqlite3
        2. database.db(创建数据库)
        3. 我相信这一定会对你有所帮助

答案 17 :(得分:0)

是否已安装python-pysqlite2软件包?

sudo apt-get install python-pysqlite2

答案 18 :(得分:0)

你必须使用centos或redhat并自己编译python, 这是python的bug 在您的python源代码目录中执行此操作并在下面执行此操作

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

答案 19 :(得分:0)

如果您使用的是 FreeBSD,请尝试像这样安装 sqlite。

pkg install py27-sqlite3-2.7.10_6

答案 20 :(得分:-1)

下载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

答案 21 :(得分:-2)

尝试复制_sqlite3.so,以便Python可以找到它。

它应该很简单:

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

相信我,尝试一下。

答案 22 :(得分:-3)

您需要在python环境中安装pysqlite

    $ pip install pysqlite