2

我想在 Python 和 sqlite 之间有一个接口。两者都安装在机器上。我有一个旧版本的 Python (2.4.3)。因此,默认情况下不包含 pysqlite。首先,我尝试通过安装 pysqlite 来解决这个问题,但我没有朝这个方向成功。我解决该问题的第二次尝试是安装新版本的 Python。我没有机器上的root权限。所以,我在本地安装了它。Python的新版本是(2.6.2)。据我所知,这个版本默认应该包含 pysqlite(现在它被称为“sqlite3”,而不是像以前一样的“pysqlite2”)。

但是,如果我输入:

from sqlite3 import *

我得到:

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

需要注意的是,上面的错误消息与我输入“from blablabla import *”时得到的错误消息不同:

Traceback(最近一次调用最后一次):
文件“”,第 1 行,在 ImportError 中:没有名为 blablabla 的模块

所以,python 看到了一些与 pysqlite 相关的东西,但仍然存在一些问题。有人可以帮我解决这个问题吗?

PS 我使用 CentOS 版本 5.3 (Final)。

4

2 回答 2

1

Windows上,_sqlite3.pyd驻留在C:\Python26\DLLs. 在*nix上,它应该位于类似于/usr/lib/python2.6/lib-dynload/_sqlite3.so. 可能是您缺少该共享库或您PYTHONPATH的设置不正确。

由于您说您没有以超级用户身份安装,因此它可能是格式错误的路径;_sqlite3.so您可以通过执行手动让 Python 搜索路径

import sys
sys.path.append("/path/to/my/libs")

但首选方法可能是更改PYTHONPATH.bashrc或其他登录文件。

于 2009-09-25T17:20:04.527 回答
1

你有一个“slite3.py”(实际上它相当于一个包,,,sqlite3/__init__.py所以import sqlite3本身很好,但是该模块依次尝试import _sqlite3并失败,所以它没有找到_sqlite3.so。它应该在python2.6/lib-dynload你本地的 Python 根目录下,并且 ld应该指示它也有权从该目录加载动态库(通常通过设置适当的环境变量,例如在您的 .bashrc 中)。你有那个 lib-dynload 目录吗?里面有什么?你有哪些环境变量包含字符串 LD(大写),即env|grep LD在您的 shell 提示符下?

于 2009-09-25T17:45:47.533 回答