没有名为_sqlite3的模块

Ale*_*ijk 110 python sqlite django debian

我正在尝试在运行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
Run Code Online (Sandbox Code Playgroud)

看一下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
>>>
Run Code Online (Sandbox Code Playgroud)

在网上阅读,我了解到Python 2.5应该包含所有必需的SQLite包装器.我是否需要重新安装Python,还是有其他方法可以启动并运行此模块?

小智 102

看来你的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.

  • 我怎么能安装``sqlite-devel```?我正在定制的linux系统.我刚刚下载了``sqlite-autoconf-3100200.tar.gz```并运行```./configure```,```make && make install```.在我重新编译python3后,它仍然无法正常工作. (3认同)
  • 如何检查配置脚本的位置? (3认同)
  • 这些解决方案(参考:本页上的所有解决方案)均不适用于带有 python 3.8.0 的 amazon linux (3认同)
  • 对于阅读本文的任何人,请确保在答案中添加configure选项。那也救了我。否则,已安装libsqlite3-dev无关紧要。 (2认同)
  • 我正在使用 `pyenv`,在安装了 `libsqlite3-dev` 后,我不得不使用 `pyenv install &lt;python-version&gt;` 重新安装你的 python 版本。 (2认同)
  • 这对我有用。Centos 8、python 3.8.8 按照这个安装 python3.8 https://computingforgeeks.com/how-to-install-python-3-on-centos/ 1. 执行 `yum install sqlite-devel` 2. go到 python 源代码(您下载的位置)使用 `./configure --enable-loadable-sqlite-extensions &amp;&amp; make &amp;&amp; sudo make install` 重新配置并重新编译 Python (2认同)

Emi*_*ien 75

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

  • 究竟!您不必手动操作二进制文件和环境.在我的情况下,我已经从源代码构建了Python 2.7,因此,为了缩小编译,我执行了apt-get install libsqlite3-dev; ./配置; make libinstall; make sharedinstall; (6认同)

Tin*_*nce 24

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

如果你使用pyenv安装python ,它被列为常见的构建问题之一.要解决它,删除已安装的python版本,安装要求(针对此特定情况libsqlite3-dev),然后重新安装python版本.

  • 不需要删除已安装的版本,“pyenv install &lt;python-version&gt;”会询问是否应该覆盖并重新编译。 (5认同)

Rob*_*bin 21

我的python是从源代码构建的,原因是exec configure python version时缺少选项?3.7.4

./configure --enable-loadable-sqlite-extensions --enable-optimizations
make
make install
Run Code Online (Sandbox Code Playgroud)

固定的


小智 20

适用于带有 Redhat 7 或 Centos 7 的 Python 3.7.8。

  • 安装 sqlite-devel
$ yum install sqlite-devel
Run Code Online (Sandbox Code Playgroud)
  • 编译并安装带有sqllite 扩展的Python3
$ ./configure --enable-optimizations --enable-loadable-sqlite-extensions
$ make install
Run Code Online (Sandbox Code Playgroud)


Joe*_*Joe 19

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

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

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

sudo apt-get install libsqlite3-dev
Run Code Online (Sandbox Code Playgroud)

然后我运行了这个命令:

pip install pysqlite
Run Code Online (Sandbox Code Playgroud)

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

python manager.py syncdb
Run Code Online (Sandbox Code Playgroud)

  • Python 3不支持pysqlite.使用Python 3时,请使用标准库中的sqlite3模块 (3认同)
  • 在Centos 6.5中运行`yum install sqlite-devel`而不是第一行. (2认同)
  • 这对Python 2来说很好,但是在Python 3中``pysqlite`现在是`sqlite3`,而你不能`pip -m install`. (2认同)

小智 14

  1. 安装sqlite-devel包:

    yum install sqlite-devel -y

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

    ./configure
    make
    make altinstall
    
    Run Code Online (Sandbox Code Playgroud)

  • 我做了 1(yum install sqlite-devl -y) 这没问题。在 #2 中,我得到了这个错误 `bash: ./configure: No such file or directory`。我该如何解决。 (2认同)

Gle*_*ard 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
Run Code Online (Sandbox Code Playgroud)

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

import sys
print sys.path
Run Code Online (Sandbox Code Playgroud)

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

  • 刚刚检查。路径在那里,但 _sqlite3.so 确实丢失了。我是否可以单独安装它或更好地重新安装python有什么建议吗?谢谢! (2认同)
  • 看起来你手动构建和安装了Python(你的操作系统中的软件包太旧了吗?),因为它在/ usr/local中.确保安装了sqlite dev软件包(当前发行版中的libsqlite3-dev,可能不在你的软件包中),否则Python将无法构建模块.如果您安装它,您将需要重建Python,因此它包含该模块. (2认同)

小智 8

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

  1. 找到文件"_sqlite3.so"

    find / -name _sqlite3.so
    
    Run Code Online (Sandbox Code Playgroud)

    出: /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
    
    Run Code Online (Sandbox Code Playgroud)

最后,一切都会好的.

  • 不适合我。在 CentOS 7 上出现“ImportError:动态模块未定义模块导出函数 (PyInit__sqlite3)”。 (7认同)

小智 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/'
    ]
    
    Run Code Online (Sandbox Code Playgroud)

    我添加的位是'/ 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支持现在有效.


Ehs*_*n88 5

这在Redhat Centos 6.5中对我有用:

yum install sqlite-devel
pip install pysqlite
Run Code Online (Sandbox Code Playgroud)

  • ```pip install pysqlite3-binary``` 有效,而不是 ```pip install pysqlite3``` (2认同)

小智 5

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

卸载现有的Python:

sudo apt-get remove --purge python3.6
Run Code Online (Sandbox Code Playgroud)

安装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
Run Code Online (Sandbox Code Playgroud)


bry*_*yan 4

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

sudo apt-get install python-pysqlite2
Run Code Online (Sandbox Code Playgroud)