为什么我的python没有看到pysqlite?

时间:2009-09-25 17:04:40

标签: python sqlite pysqlite

我想在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

必须注意的是,上面的错误信息与我从“blablabla import *”输入的内容不同:

  

追踪(最近的呼叫最后):
  文件“”,第1行,in   ImportError:没有名为blablabla的模块

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

P.S。 我使用CentOS版本5.3(最终版)。

2 个答案:

答案 0 :(得分:1)

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

由于您说您没有以超级用户身份安装,因此它可能是一个格式错误的路径;您可以通过

手动让Python搜索_sqlite3.so的路径
import sys
sys.path.append("/path/to/my/libs")

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

答案 1 :(得分:1)

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