无法在 Python3 中导入 sqlite3

新手上路,请多包涵

我无法在 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. 我还在这台运行 CentOS 6.8 x86_64 的服务器上安装了 Python 2.6.6。使用 Python 2.6.6 时,我可以打开 Python REPL 并导入 sqlite3 就好了。我也可以直接从 bash 使用 sqlite3,似乎没有任何问题。

  2. 这个有用的问题 看起来很有希望。正如用户 jammyWolf 所建议的,我尝试使用 --enable-loadable-sqlite-extensions 选项重新配置和重新编译 Python3.5。不,同样的错误仍然发生。

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

  4. 我注意到在错误消息中,它说 No module named '_sqlite3'该线程 建议模块名称前的下划线表示该模块是一个实现细节,不会在 API 中公开。 … 我不确定如何使用这些信息,但其中某处可能有提示。

有任何想法吗?

原文由 fterdal 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 797
1 个回答

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

  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

原文由 Lance 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题