在Linux上作为用户构建带完整Sqlite3的Python 2.5

4 投票
1 回答
1719 浏览
提问于 2025-04-17 09:09

这个问题对我来说有点复杂,不过我试着说清楚:

我在一个Linux服务器上工作,假设在这个环境下安装任何未安装的软件包几乎是不可能的。

我需要设置一个可以用的Python 2.5(现在没有安装),并且还需要一个可以用的SQLite3库(任何形式的SQLite都没有安装)。

我能做的事情是:

  1. 编译Python 2.5并让它工作
  2. 编译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!

撰写回答