用sqlite3编译Python 3.4

2024-04-26 05:43:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经编译了SQLite3 3.8.6并使用以下命令将其安装到${HOME}/opt:

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

我现在试图编译Python 3.4.2来使用这个版本,而不是为整个系统安装的版本。我在这个系统上没有根访问权限。要编译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以包含位于${HOME}/opt中的sqlite3.8.6版本?

谢谢。

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


Tags: install命令版本权限homeprefixmakeinclude
3条回答
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并在my.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

嗨我帮了忙:

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

还可以选择将自定义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。 这对我有效。

相关问题 更多 >