无法在Python3中导入sqlite3

时间:2016-10-07 00:10:56

标签: python linux python-3.x sqlite python-import

我无法在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. 我一直在使用虚拟环境,就像一个好孩子一样,但我有权访问此服务器。所以,我是一个坏男孩,并在没有任何virtualenvs激活的情况下以root身份运行python3。仍然没有运气。所以我认为它与权限无关。

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

  5. 有什么想法吗?

3 个答案:

答案 0 :(得分:1)

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

yum install sqlite-devel

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

答案 1 :(得分:1)

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

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

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

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

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

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

              sudo apt-get install zlib1g-dev
              

答案 2 :(得分:0)

我复制了 sqlite3.dll 到这个文件夹:

C:\Users\*****\Anaconda3\DLLs

经过两周的尝试,一切都奏效了。