我该如何处理软件包?
我正在尝试安装 pysqlite,但遇到了一些麻烦。我发现最可能的原因是缺少 sqlite 的头文件,所以我需要安装它们。我的系统是 CentOS 5.3(最终版),我用的是 Python 2.6.2。
我还发现我需要 .rpm 文件。只要我有这些文件,我就可以执行:
rpm -i sqlite3-devel-3.n.n.n.rpm
这样一切应该就没问题了。
不过,我不知道在哪里可以找到 sqlite3-devel-3.n.n.n.rpm 文件。这个文件应该已经在我的系统上吗?我用“locate sqlite3-devel-3”找不到它。我需要下载这个文件吗?如果需要,我在哪里可以找到它,应该用哪个版本?也就是说,这个 .rpm 文件可能需要和我电脑上安装的 sqlite 版本一致吧?如果是这样,我该如何查找我 sqlite 的版本呢?
如果我输入“from pysqlite2 import dbapi2 as sqlite”,我得到:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named pysqlite2
而“yum search pysqlite”给我的结果是:
Loaded plugins: fastestmirror
Excluding Packages in global exclude
list Finished
==== Matched: pysqlite ==== python-sqlite.x86_64 : Python bindings
for sqlite.
顺便说一下,我有一个目录: /home/myname/opt/lib/python2.6/sqlite3 在这里我有以下文件:
dbapi2.py dbapi2.pyc dbapi2.pyo
dump.py dump.pyc dump.pyo
__init__.py __init__.pyc __init__.pyo test
如果我输入“import unittest”,然后“import sqlite3 as sqlite”,我得到:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/myname/opt/lib/python2.6/sqlite3/__init__.py", line 24, in <module>
from dbapi2 import * File "/home/myname/opt/lib/python2.6/sqlite3/dbapi2.py",
line 27, in <module>
from _sqlite3 import * ImportError: No module named _sqlite3
提前谢谢你。
3 个回答
通常情况下,你应该通过 yum
来安装 python 的 sqlite
模块,类似这样:
yum install python-sqlite
然后你需要修改你的代码,把所有 sqlite2
的地方改成 sqlite3
。
顺便说一下,每当你看到安装 sqlite3-devel-3.n.n.n.rpm
的说明时,里面的 n
并不是字面意思;它们应该被替换成具体的数字,用来指定这个 rpm 包的版本。
Python 2.6(还有一些更早的版本)自带了sqlite这个库,所以你不需要额外去安装什么。只要直接导入它,然后就可以使用了。
你可以使用buildout来创建你项目的本地版本。这样可以在没有服务器管理员权限的情况下,安装所有必要的软件包。
想试试的话,可以按照以下步骤操作:
mkdir tmp
cd tmp
wget http://svn.zope.org/*checkout*/zc.buildout/trunk/bootstrap/bootstrap.py
python bootstrap.py init
vim buildout.cfg
编辑buildout.cfg文件,把里面的内容替换成以下内容:
[buildout]
parts = sqlite
[sqlite]
recipe = zc.recipe.egg
eggs = pysqlite
interpreter = mypython
接下来,运行./bin/buildout来重建项目。这会下载所有需要的软件包,并为你创建一个新的解释器,你可以用它来测试是否能访问sqlite。
./bin/buildout
./bin/mypython
>>> import sqlite3
这样你就有了一个可控的环境,可以在里面进行开发。如果想了解更多关于buildout的内容,可以观看2009年pycon上关于Setuptools、Distutils和Buildout的视频。
Python中的Eggs和Buildout部署 - 第1部分
Python中的Eggs和Buildout部署 - 第2部分
Python中的Eggs和Buildout部署 - 第3部分
祝你好运