如何获得_sqlite3.so文件?

时间:2009-09-25 23:55:45

标签: python sqlite pysqlite

我已经安装了Python 2.6.2 ..我在“本地”做到了,因为我没有root权限。在这个版本的Python中,我想使用名为“sqlite3”的模块(在早期版本中称为“pysqlite”)。从理论上讲,我必须能够毫无问题地使用这个模块,因为它应该默认包含在所考虑的Python版本中。但是,我有一些麻烦。当我输入:

from sqlite3 import *

我明白了:

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

正如我已经告诉过的,这个问题的可能原因是模块试图导入_sqlite3并失败,所以它没有找到_sqlite3.so。我的“/home/verrtex/opt/lib/python2.6/lib-dynload”目录中没有_sqlite3.so文件这一事实支持了这种解释。所以,这是我必须解决的问题(我必须将此文件放到此目录中)。

我发现要解决这个问题,我必须“安装sqlite3并重新编译Python”。我还发现问题可以通过“从源构建并将库移动到/usr/lib/python2.5/lib-dynload/”来解决。

然而,我不清楚到底应该做什么。我应该安装名为“sqlite3”的python模块,还是应该安装sqlite-database?顺便说一句,我已经由管理员全局安装了sqlite-database。我可以使用它还是我还要安装自己的数据库?顺便说一下,我没有root权限。这可能是个问题吗?或者我需要安装一个python模块?在这种情况下,缺少root权限是一个问题吗?

我也被告知要从SQLite下载页面获取源文件,解压缩归档,移动到扩展目录并执行:

./configure
make
make install

然后我必须将新编译的文件复制到我的Python目录中。我应该复制所有新编译的文件吗?我应该复制哪个目录(我的Python目录有一些子目录)?

非常感谢任何帮助,因为我为这个问题堆叠了一个诡计。

P.S。我的操作系统是CentOS版本5.3(最终版)。

2 个答案:

答案 0 :(得分:1)

您的sys.path可能没有指向您本地安装的副本,或者您没有运行您认为自己的Python 2.6.2。

如果不是这种情况,则需要SQLite开发头文件(sqlite-dev或其他),然后重新编译Python。你需要在编译结束时注意,因为它会因为缺少依赖性而抱怨它没有构建它。

编辑:重读问题。

编辑2:此外,不要这样做:

from module import *

这样做:

from module import what_i_need
import module2

答案 1 :(得分:0)

虽然你可能已经找到了解决方案,但我只是写了一些陷入同样问题的人。

我的操作系统 CentOS 6.3(最终版),python2.6

我在我的系统中安装了python2.7.3,但问题仍然存在。 (安装python2.7.3后,_sqlite3.so应该在/path/to/python2.7.3/lib/python2.7/lib-dynload。因为在安装python2.7之前,安装了sqlite-autoconf-3071502.tar.gz。)

然后我将/path/to/python2.6/lib/python2.6/lib-dynload/_sqlite3.so复制到python2.7的路径。并输入python-shell:

  

>>> import sqlite3

  

>>> import _sqlite3

没有错误报告。

不幸的是,当我运行我的python脚本时,该死的错误就像以前一样出现了。 我安装sqlite-devel(sudo yum install sqlite-devel或下载here),然后再次重新安装python2.7.3。再次运行我的python脚本。谢天谢地!该死的错误终于解决了。