当前位置:  开发笔记 > 编程语言 > 正文

没有名为_sqlite3的模块

如何解决《没有名为_sqlite3的模块》经验,为你挑选了9个好方法。

我正在尝试在运行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 
    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 "", line 1, in 
  File "/usr/local/lib/python2.5/sqlite3/__init__.py", line 24, in 
    from dbapi2 import *
  File "/usr/local/lib/python2.5/sqlite3/dbapi2.py", line 27, in 
    from _sqlite3 import *
ImportError: No module named _sqlite3
>>>

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



1> 小智..:

看来你的makefile没有包含相应的.so文件.您可以使用以下步骤更正此问题:

    安装sqlite-devel(或libsqlite3-dev在一些基于Debian的系统上)

    使用重新配置和重新编译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后,它仍然无法正常工作.
如何检查配置脚本的位置?
对于阅读本文的任何人,请确保在答案中添加configure选项。那也救了我。否则,已安装libsqlite3-dev无关紧要。

2> Emilien..:

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


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

3> Tiny Instanc..:

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

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



4> Joe..:

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

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

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

sudo apt-get install libsqlite3-dev

然后我运行了这个命令:

pip install pysqlite

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

python manager.py syncdb


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

5> 小智..:

    安装sqlite-devel包:

    yum install sqlite-devel -y

    从源代码重新编译python:

    ./configure
    make
    make altinstall
    



6> Glenn Maynar..:

我的_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.


看起来你手动构建和安装了Python(你的操作系统中的软件包太旧了吗?),因为它在/ usr/local中.确保安装了sqlite dev软件包(当前发行版中的libsqlite3-dev,可能不在你的软件包中),否则Python将无法构建模块.如果您安装它,您将需要重建Python,因此它包含该模块.

7> 小智..:

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

    找到文件"_sqlite3.so"

    find / -name _sqlite3.so
    

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

    找到你想要使用的python标准库的目录,

    为了我 /usr/local/lib/python3.6/lib-dynload

    复制文件:

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

最后,一切都会好的.



8> 小智..:

我最近尝试在我的Ubuntu 11.04桌面上安装python 2.6.7以进行一些开发工作.遇到类似的问题到这个线程.我想要修复它:

    调整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 /'.

    在运行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支持现在有效.



9> Ehsan88..:

这在Redhat Centos 6.5中对我有用:

yum install sqlite-devel
pip install pysqlite

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有