我无法在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建议的那样。不,仍然会发生同样的错误。
我一直在使用虚拟环境,就像一个好孩子一样,但我有权访问此服务器。所以,我是一个坏男孩,并在没有任何virtualenvs激活的情况下以root身份运行python3。仍然没有运气。所以我认为它与权限无关。
我注意到在错误消息中,它显示No module named '_sqlite3'
。 This thread表明模块名称前面的下划线表示该模块是一个实现细节,并未在API中公开。 ......我不知道该如何处理这些信息,但在那里可能会有一些提示。
有什么想法吗?
答案 0 :(得分:1)
安装sqlite-devel
包,其中包含构建sqlite3
扩展程序所需的标头库。
yum install sqlite-devel
注意:Python不包含sqlite3
库本身,而是扩展模块(包装器)。
答案 1 :(得分:1)
Falsetru是正确的,我将为那些不熟悉的人(linux指令)详细介绍一下。如果您收到此错误,您可能正在使用没有正确标头编译的python版本。这是一个分步指南,以便对其进行排序。 (Python 3.X.X指令)
sudo apt-get install libsqlite3-dev
sudo apt-get remove python3.6
cd /tmp && wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
tar -xvf Python-3.6.5.tgz
cd Python-3.6.5 && ./configure
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
经过两周的尝试,一切都奏效了。