【问题标题】:How to get _sqlite3.so file?如何获取 _sqlite3.so 文件?
【发布时间】:2009-09-25 23:55:45
【问题描述】:

我已经安装了 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 目录有一些子目录)?

非常感谢任何帮助,因为我一直在纠结这个问题。

附:我的操作系统是 CentOS release 5.3 (Final)。

【问题讨论】:

标签: python sqlite pysqlite


【解决方案1】:

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

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

编辑:重读问题。

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

from module import *

这样做:

from module import what_i_need
import module2

【讨论】:

  • 我确定,我正在运行 Python 2.6.2(我用“python -V”检查它)。我认为“_sqlite3.so”是个问题,因为它不在应该在的“/lib-dynload/”中。
【解决方案2】:

虽然您可能已经找到了解决方案,但我只是为遇到同样问题的人写下了我的解决方案。

我的操作系统是 CentOS 6.3(Final) with python2.6

我在我的系统中安装了python2.7.3,但问题仍然存在。 (_sqlite3.so应该在安装python2.7.3之后在/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 脚本。谢天谢地!该死的错误终于解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    相关资源
    最近更新 更多