如何获得_sqlite3.so文件?
我安装了Python 2.6.2,因为我没有管理员权限,所以是“本地”安装的。我想用一个叫“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数据库?顺便说一下,我已经有管理员全局安装的sqlite数据库。我可以用它吗,还是我还需要安装自己的数据库?另外,我没有管理员权限,这会是个问题吗?我需要安装一个Python模块吗?在这种情况下,没有管理员权限会是个问题吗?
我还被告知要从SQLite下载页面获取源文件,解压缩文件,然后进入解压后的目录,执行:
./configure
make
make install
然后我需要把新编译的文件复制到我的Python目录。我应该复制所有新编译的文件吗?具体应该复制到哪个目录(我的Python目录下有一些子目录)?
非常感谢任何帮助,因为我在这个问题上卡了很久。
附言:我的操作系统是CentOS 5.3(最终版)。
2 个回答
虽然你可能已经找到了解决办法,但我还是把我的方法写下来,给那些遇到同样问题的人。
我的操作系统是CentOS 6.3(最终版),使用的是python2.6。
我在系统中安装了python2.7.3,但问题依然存在。(_sqlite3.so文件应该在/path/to/python2.7.3/lib/python2.7/lib-dynload
这个路径下,前提是python2.7.3已经安装好。因为在安装python2.7之前,我已经安装了sqlite-autoconf-3071502.tar.gz这个包。)
然后,我把/path/to/python2.6/lib/python2.6/lib-dynload/_sqlite3.so
这个文件复制到了python2.7的路径下。接着在python命令行中输入:
>>> import sqlite3
或者
>>> import _sqlite3
没有报错。
可惜的是,当我运行我的python脚本时,之前的那个讨厌的错误又出现了。我安装了sqlite-devel(可以用sudo yum install sqlite-devel
命令,或者在这里下载),然后重新安装了python2.7.3。再次运行我的python脚本。谢天谢地!那个讨厌的错误终于解决了。
你的 sys.path
可能没有指向你本地安装的 Python 版本,或者你并没有运行你认为的 Python 2.6.2。
如果都不是这样的话,你需要安装 SQLite 的开发头文件(比如 sqlite-dev),然后重新编译 Python。在编译结束时要特别注意,因为它会提示你由于缺少依赖项而没有构建的内容。
编辑:重新阅读问题。
编辑 2:另外,请不要这样做:
from module import *
请这样做:
from module import what_i_need
import module2