在Linux上作为用户构建带完整Sqlite3的Python 2.5
这个问题对我来说有点复杂,不过我试着说清楚:
我在一个Linux服务器上工作,假设在这个环境下安装任何未安装的软件包几乎是不可能的。
我需要设置一个可以用的Python 2.5(现在没有安装),并且还需要一个可以用的SQLite3库(任何形式的SQLite都没有安装)。
我能做的事情是:
- 编译Python 2.5并让它工作
- 编译SQLite3的合并版本
无论如何,Python 2.5应该是内置了与SQLite3的交互功能(叫做pysqlite)。这听起来没错,但当我尝试导入sqlite3时:
import sqlite3
却失败了,因为最终无法导入_sqlite3。
经过一些搜索,我了解到虽然pysqlite可能是内置的,但sqlite并不是。因此我认为我需要在本地构建sqlite,并让这两个软件能够相互配合。
这听起来合理。
我希望我能把合并版本编译成共享对象,但看起来有点麻烦。我是不是应该把sqlite3.so重命名为_sqlite3,然后放到某个地方?这听起来有点不靠谱,我还是试了一下,结果出现了错误:
dynamic module does not define init function (init_sqlite3)
到这里我有点卡住了。我对构建和编译这些东西不太熟悉,承认之前用sudo apt-get / sudo yum让我变得懒惰,但现在似乎没有这个选项。
希望能得到一些帮助!
1 个回答
6
首先,你需要下载、构建并安装sqlite3,并指定一个--prefix
。然后,用同样的前缀来构建Python,这样它就能找到sqlite的安装位置,并会构建出_sqlite3模块。
$ mkdir -p ~/applications/src
$ cd ~/applications/src
$ wget http://www.sqlite.org/sqlite-autoconf-3070900.tar.gz
$ tar xvvf sqlite-autoconf-3070900.tar.gz
$ cd sqlite-autoconf-3070900
$ ./configure --prefix=~/applications
$ make
$ make install
$ cd ~/applications/src
$ wget http://www.python.org/ftp/python/2.5.2/Python-2.5.2.tgz
$ tar xvvf Python-2.5.2.tgz
$ cd Python-2.5.2
$ ./configure --prefix=~/applications
$ make
$ make install
$ ~/applications/bin/python
>>> import sqlite3
>>> # no error!