179

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

4

26 回答 26

195

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

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

笔记

sudo make install部分将将该 python 版本设置为系统范围的标准,这可能会产生无法预料的后果。如果您在工作站上运行此命令,您可能希望将它现有的 python 一起安装,这可以使用sudo make altinstall.

于 2014-06-27T10:28:29.813 回答
85

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

于 2010-04-30T19:46:42.547 回答
55

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

如果您使用pyenv安装 python ,它被列为常见的构建问题之一。要解决它,请删除已安装的 python 版本,安装要求(对于这种特殊情况libsqlite3-dev),然后重新安装 python 版本

pyenv install <python-version> 

然后根据需要重新创建 virtualenv。

于 2016-08-09T05:17:17.783 回答
26

这就是我为了让它工作而做的。

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

我首先按照 Zubair(上图)所说的做了,然后运行了这个命令:

sudo apt-get install libsqlite3-dev

然后我运行了这个命令:

pip install pysqlite

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

python manager.py syncdb
于 2013-11-02T23:40:35.027 回答
25
  1. 安装sqlite-devel包:

    yum install sqlite-devel -y

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

    ./configure
    make
    make altinstall
    
于 2015-12-07T08:50:12.257 回答
25

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

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

固定的

于 2019-10-15T09:09:12.010 回答
12

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

  1. 找到文件“_sqlite3.so”

    find / -name _sqlite3.so
    

    出去: /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
    

最后,一切都会好起来的。

于 2017-04-18T11:51:06.920 回答
11

我的 _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 外壳中,

import sys
print sys.path

在我的例子中,/usr/lib/python2.5/lib-dynload 在列表中,所以它能够找到/usr/lib/python2.5/lib-dynload/_sqlite3.so。

于 2009-07-31T04:50:35.653 回答
9

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

  1. 调整 setup.py 文件以包含正确的 sqlite 开发路径。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/-这些是我的构建路径,您可能需要根据您的设置调整它们)。

瞧!SQLite3 支持现在有效。

于 2011-07-16T06:05:29.977 回答
7

这在 Redhat Centos 6.5 中对我有用:

yum install sqlite-devel
pip install pysqlite
于 2014-08-16T10:31:24.320 回答
5

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
于 2018-07-18T11:15:37.617 回答
5

对于带有 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
于 2020-10-16T08:21:17.620 回答
4

我在 FreeBSD 8.1 中遇到了问题:

- No module named _sqlite3 -

通过站端口解决 ----------

/usr/ports/databases/py-sqlite3

在这之后可以看到:

OK ----------
'>>>' import sqlite3 -----
'>>>' sqlite3.apilevel -----
'2.0'
于 2011-08-29T23:40:25.037 回答
4

是否安装了python-pysqlite2包?

sudo apt-get install python-pysqlite2
于 2009-07-31T04:23:44.537 回答
3

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

于 2009-10-20T15:29:22.437 回答
3

为登陆此页面寻找 Windows 操作系统解决方案的任何人提供答案:

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

  • 点安装 pysqlite3
  • 点安装 db-sqlite3

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

解决方案:

  1. 我从sqlite 站点获取了 DLL 文件。这可能会根据您的 python 安装版本而有所不同。

  2. 我把它粘贴到了env的DLL目录中。对我来说是“C:\Anaconda\Lib\DLLs”,但请检查你的。 放置DLL文件前后

于 2020-03-07T05:33:49.273 回答
2

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

curl -sk https://gist.github.com/msabramo/2727063/raw/59ea097a1f4c6f114c32f7743308a061698b17fd/gistfile1.diff | patch -p1
于 2014-01-07T03:13:31.057 回答
2

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

只需删除python.pipsqlite3重新安装

  1. sudo apt-get remove python.pip
  2. sudo apt-get remove sqlite3

现在再次安装

  1. sudo apt-get install python.pip
  2. sudo apt-get install sqlite3

就我而言,在sqlite3再次安装时它显示了一些错误,然后我输入了

  1. sqlite3

在终端上检查它是否被移除并开始解包

一旦sqlite3安装了启动终端并写入

  1. sqlite3
  2. database.db(创建数据库)

我相信这肯定会帮助你

于 2018-03-14T08:37:17.543 回答
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

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

于 2020-05-06T12:08:18.470 回答
1

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

pkg install py27-sqlite3-2.7.10_6
于 2020-12-21T10:27:33.253 回答
0

在Ubuntu的 python 虚拟环境中设置时,我遇到了多个 python 依赖包的问题。这是因为我们的python的sqlite绑定。

我得到的错误

    from pysqlite2 import dbapi2 as sqlite3
ModuleNotFoundError: No module named 'pysqlite2'

我通过 --enable-loadable-sqlite-extensions=yes 1 解决了它。)首先找到你用于创建虚拟环境的 python 或 python 版本。我用过python3.8 例如

$ whereis python
python: /usr/bin/python3.6m /usr/bin/python /usr/bin/python3.8 /usr/bin/python2.7-config /usr/bin/python3.8-config  python

$ cd /usr/bin

$ls
python3.8
python3.8-config

注意: pytho 会有很多包检查。你会找到每个 python 版本的配置文件,现在使用特定的 python 版本

ox:/usr/bin$ ./python3.8-config --enable-loadable-sqlite-extensions=yes

或者

ox:/usr/bin$ ./python3.8-config --enable-optimizations --enable-loadable-sqlite-extensions

现在,使用该 python 版本创建您的虚拟环境,例如转到您要创建虚拟环境的文件夹

$ python3.8 -m venv mlwen_jup_env
$ source mlwen_jup_env/bin/activate

完成了,现在你可以安装包了

于 2022-02-22T16:25:41.460 回答
0

使用asdf安装 Python 3.8.11 后我遇到了同样的问题

要解决此问题:

我不得不安装libsqlite3-dev

sudo apt-get install libsqlite3-dev

然后通过卸载 Pythonasdf

asdf uninstall python 3.8.11

并通过再次安装 Pythonasdf

asdf install python 3.8.11
于 2021-10-14T03:54:04.317 回答
0

以下适用于具有虚拟环境的 Python 3.9:

  1. 安装 sqlite3 库。

    sudo apt-get install libsqlite3-dev
    
  2. 激活 Python 虚拟环境。

    source env/bin/activate
    
  3. 将 sqlite3 文件复制到 Python 虚拟环境中并重命名以支持 Python 3.9。

    cp /usr/lib/python3.8/lib-dynload/_sqlite3.cpython-38-x86_64-linux-gnu.so ./env/lib/python3.9/site-packages
    mv ./env/lib/python3.9/site-packages/_sqlite3.cpython-38-x86_64-linux-gnu.so ./env/lib/python3.9/site-packages/_sqlite3.cpython-39-x86_64-linux-gnu.so
    

请注意,我们将文件名中的 38 重命名为 39 以支持 Python 3.9。

于 2022-02-02T19:59:04.953 回答
0

下载 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
于 2016-10-18T11:27:16.603 回答
-2

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

    $ pip install pysqlite
于 2013-09-20T08:25:58.513 回答
-3

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

它应该很简单:

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

相信我,试试看。

于 2018-09-02T01:46:02.103 回答