首页 文章

无法在Python3中导入sqlite3

提问于
浏览
8

我无法在Python 3.5.0版本中导入sqlite3模块 . 这是我得到的:

>>> import sqlite3
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.5/sqlite3/__init__.py", line 23, in <module>
    from sqlite3.dbapi2 import *
  File "/usr/local/lib/python3.5/sqlite3/dbapi2.py", line 27, in <module>
    from _sqlite3 import *
ImportError: No module named '_sqlite3'

我知道,我知道,网络上有大量的StackOverflow帖子和支持论坛,人们抱怨这个问题,但到目前为止,所发布的解决方案都没有对我有用 . 这是我去过的地方:

  • 我也在这台服务器上安装了Python 2.6.6,运行CentOS 6.8 x86_64 . 我可以在使用Python 2.6.6时打开Python REPL并导入sqlite3 . 我也可以直接从bash使用sqlite3,似乎什么都没有 .

  • This helpful question看起来很有希望 . 我尝试使用 --enable-loadable-sqlite-extensions 选项重新配置和重新编译Python3.5,正如用户jammyWolf建议的那样 . 不,同样的错误仍然存在 .

  • 我一直在使用虚拟环境,就像一个好孩子,但我有root访问权限 . 所以,我是一个坏男孩,并在没有任何virtualenvs激活的情况下以root身份运行python3 . 仍然没有运气 . 所以我不认为它与权限有任何关系 .

  • 我注意到在错误消息中,它显示 No module named '_sqlite3' . This thread建议模块名称前面的下划线表示该模块是一个实现细节,并且不知道该如何处理这些信息,但在那里可能会有一些提示 .

有任何想法吗?

2 回答

  • 1

    安装sqlite-devel包,其中包含构建 sqlite3 扩展所需的头,库 .

    yum install sqlite-devel
    

    NOTE :Python本身不包含 sqlite3 库,而是扩展模块(包装器) .

  • 0

    Falsetru是正确的,我将为那些不熟悉的人(linux指令)详细介绍一下 . 如果您收到此错误,您可能正在使用没有正确标头编译的python版本 . 这是一个分步指南,以便对其进行排序 . (Python 3.X.X说明)

    • 安装所需的sqlite库

    sudo apt-get install libsqlite3-dev

    • 卸载python(我在本指南中使用python 3.6.5作为示例)

    sudo apt-get remove python3.6

    • 从源代码下载python

    cd /opt && sudo wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz

    • 解压缩档案

    sudo tar -xvf Python-3.6.5.tgz

    • 配置

    cd Python-3.6.5 && sudo ./configure

    • 制作并安装(当你在它的时候去煮咖啡)

    sudo make make install

    如果你做的一切正确运行“python3.6 -V”应该给你你的python版本 . 请注意,您还必须重建您拥有的任何虚拟环境 .

    你可能会遇到一个最后的警告 .

    zipimport.ZipImportError: can't decompress data; zlib not available 如果您没有安装以下zlib库,则会发生这种情况:

    sudo apt-get install zlib1g-dev

相关问题