使用sqlite3编译Python 3.4

时间:2014-10-08 15:45:29

标签: python sqlite

我已编译SQLite3 3.8.6并将其安装到$ {HOME} / opt with:

LDFLAGS="-L${HOME}/opt/lib" CFLAGS="-L${HOME}/opt/include" ./configure --prefix=$HOME/opt
make && make install

我现在正在尝试编译Python 3.4.2以使用此版本而不是为整个系统安装的版本。我在这个系统上没有root访问权限。要编译Python,我正在使用:

LDFLAGS="-L${HOME}/opt/lib" CFLAGS="-L${HOME}/opt/include" ./configure --prefix=$HOME/opt
make && make install

如果是SQLite3,我能用我的新版本编译Python 3.3.5,但这些相同的步骤对我来说似乎并不适用于3.4.2。

如何编译Python 3.4.2以包含我的SQLite 3.8.6版本,该版本位于$ {HOME} / opt?

感谢。

编辑:它编译&安装正常,除了使用较旧的系统版本的sqlite3而不是我编译的版本&安装自己。

3 个答案:

答案 0 :(得分:8)

还可以选择将自定义Python构建与您自己构建的sqlite3预链接。 (我有同样的问题:自定义python使用的是系统提供的sqlite3,完全忽略了我构建的sqlite3。)

使用以下命令添加configuremake命令

LD_RUN_PATH=$HOME/opt/lib configure LDFLAGS="-L$HOME/opt/lib" CPPFLAGS="-I$HOME/opt/include" …
LD_RUN_PATH=$HOME/opt/lib make

这样默认情况下构建的python3会链接到您的sqlite3。 这对我有用。

答案 1 :(得分:1)

import platform,sqlite3
print("Oper Sys : %s %s" % (platform.system(), platform.release()))
print("Platform : %s %s" % (platform.python_implementation(),platform.python_version()))
print("SQLite   : %s" % (sqlite3.sqlite_version))

当我运行此代码时,输​​出包含系统的sqlite3版本:

Oper Sys : Linux 3.2.0-4-amd64
Platform : CPython 3.4.2
SQLite   : 3.7.13

在$ {HOME} / opt {include,lib}下安装sqlite v3.8.6并在我的.bashrc中设置它:

export LD_LIBRARY_PATH="${HOME}/opt/lib"

我得到了我想要的结果:

Oper Sys : Linux 3.2.0-4-amd64
Platform : CPython 3.4.2
SQLite   : 3.8.6

请注意,SQLite版本从3.7.13更改为3.8.6

答案 2 :(得分:1)

嗨,我帮了忙

cd /tmp
wget https://www.sqlite.org/2019/sqlite-autoconf-3280000.tar.gz
tar xvf sqlite-autoconf-3280000.tar.gz
mv /usr/bin/sqlite3 /usr/bin/sqlite3.7
cp /tmp/sqlite-autoconf-3280000/sqlite3 /usr/bin/sqlite3
cp /tmp/sqlite-autoconf-3280000/.libs/libsqlite3.so.0.8.6 /usr/lib64/libsqlite3.so.0.8.6
cp /tmp/sqlite-autoconf-3280000/.libs/libsqlite3.so.0 /usr/lib64/libsqlite3.so.0