我无法在 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 帖子和支持论坛,人们抱怨这个问题,但到目前为止,没有一个已发布的解决方案对我有用。这是我去过的地方:
我还在这台运行 CentOS 6.8 x86_64 的服务器上安装了 Python 2.6.6。使用 Python 2.6.6 时,我可以打开 Python REPL 并导入 sqlite3 就好了。我也可以直接从 bash 使用 sqlite3,似乎没有任何问题。
这个有用的问题 看起来很有希望。正如用户 jammyWolf 所建议的,我尝试使用
--enable-loadable-sqlite-extensions
选项重新配置和重新编译 Python3.5。不,同样的错误仍然发生。我一直在像一个好孩子一样使用虚拟环境,但我有这个服务器的 root 访问权限。所以,我是个坏孩子,在没有激活任何 virtualenvs 的情况下以 root 身份运行 python3。仍然没有运气。所以我不认为它与权限有任何关系。
我注意到在错误消息中,它说
No module named '_sqlite3'
。 该线程 建议模块名称前的下划线表示该模块是一个实现细节,不会在 API 中公开。 … 我不确定如何使用这些信息,但其中某处可能有提示。
有任何想法吗?
原文由 fterdal 发布,翻译遵循 CC BY-SA 4.0 许可协议
Falsetru 是正确的,我将为那些不熟悉的人(linux 说明)进行更详细的介绍。如果您遇到此错误,很可能是您使用的 python 版本在编译时没有正确的标头。这是对其进行排序的分步指南。 (Python 3.XX 说明)
如果你做的一切都正确运行“python3.6 -V”应该给你你的python版本。请注意,您还必须重建您拥有的任何虚拟环境。
您可能会遇到的最后一个警告。
如果您没有安装以下 zlib 库,就会发生这种情况: