如何让Python识别sqlite?

1 投票
1 回答
1654 浏览
提问于 2025-04-15 14:37

我无法使用sqlite3(构建Python包),因为缺少_sqlite3.so这个文件。我发现很多人也遇到过同样的问题,他们在这里解决了这个问题。要解决我的问题,我需要“安装sqlite3并重新编译Python”。我还发现可以通过“从源代码构建并将库移动到/usr/lib/python2.5/lib-dynload/”来解决这个问题。

根据我得到的建议,我需要从源代码安装sqlite,并将新编译的文件复制到我的Python目录(没有提到“重新编译Python”)。我已经安装了sqlite,现在我需要把一些东西复制到我的/lib-dynload/目录。

我不太确定具体应该复制什么。在我的/lib-dynload/目录里只有一些.so文件。而在我的sqlite-3.6.18文件夹里没有任何*.so文件(这让我有点怀疑)。我之所以会有这个问题,是因为在/lib-dynload/里没有_sqlite3.so文件。通过编译sqlite,我得到了几个新文件(比如sqlite3.osqlite3.lo),但没有_sqlite3.so

附注:一些细节:
1. 我使用的是Python 2.6.2(我本地安装的)。
2. 我没有管理员权限。
3. 我已经在机器上由管理员全局安装了sqlite。
4. 我刚刚在本地安装了sqlite。
5. 我的操作系统是CentOS 5.3(最终版)。
6. 当我在Python命令行输入import sqlite3时,我得到:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/loctopu/opt/lib/python2.6/sqlite3/__init__.py", line 24, in <module>
    from dbapi2 import *
  File "/home/loctopu/opt/lib/python2.6/sqlite3/dbapi2.py", line 27, in <module>
    from _sqlite3 import *
ImportError: No module named _sqlite3

1 个回答

0

我没有确切的答案,但这里有一些提示

  • 从源代码安装Python时,你不需要超级用户权限。你可以选择安装到 /home/USERNAME/usr 这样的目录。例如,在配置时可以这样做: ./configure --prefix=/home/USERNAME/usr

  • 安装sqlite的二进制文件并不意味着它包含了Python的扩展(实际上,当你编译Python时,需要sqlite的开发文件)

  • 正确使用sqlite3的导入方式是 import sqlite3

撰写回答