无法在Python3中导入sqlite3

问题描述 投票:8回答:2

我无法在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帖子和支持论坛,人们抱怨这个问题,但到目前为止,所发布的解决方案都没有对我有用。这是我去过的地方:

  1. 我也在这台服务器上安装了Python 2.6.6,运行CentOS 6.8 x86_64。我可以在使用Python 2.6.6时打开Python REPL并导入sqlite3。我也可以直接从bash使用sqlite3,似乎什么都没有。
  2. This helpful question看起来很有希望。我尝试用--enable-loadable-sqlite-extensions选项重新配置和重新编译Python3.5,就像用户jammyWolf建议的那样。不,同样的错误仍然存​​在。
  3. 我一直在使用虚拟环境,就像一个好孩子,但我有root访问权限。所以,我是一个坏男孩,并在没有任何virtualenvs激活的情况下以root身份运行python3。仍然没有运气。所以我不认为它与权限有任何关系。
  4. 我注意到在错误消息中,它说No module named '_sqlite3'This thread建议模块名称前面的下划线表示该模块是一个实现细节,并未在API中公开。 ......我不知道该如何处理这些信息,但在那里可能会有一些暗示。

有任何想法吗?

python linux python-3.x sqlite python-import
2个回答
1
投票

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

yum install sqlite-devel

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


1
投票

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

  1. 安装所需的sqlite库
   sudo apt-get install libsqlite3-dev 
  1. 卸载python(我在本指南中使用python 3.6.5作为示例)
   sudo apt-get remove python3.6
  1. 从源代码下载python
   cd /tmp && wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
  1. 解压缩档案
   tar -xvf Python-3.6.5.tgz
  1. 配置
   cd Python-3.6.5 && ./configure
  1. 制作和安装(当你在它的时候去煮咖啡)
   make && sudo make install

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

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

zipimport.ZipImportError: can't decompress data; zlib not available

如果您没有安装以下zlib库,则会发生这种情况:

sudo apt-get install zlib1g-dev
© www.soinside.com 2019 - 2024. All rights reserved.