如何让pyenv编译指定SQLite版本的Python或更换其依赖SQLite版本?
让pyenv编译的Python指定使用特定版本SQLite(无需改用pysqlite3)
步骤1:卸载已安装的Python 3.9.5
先移除之前绑定系统SQLite的Python版本:
pyenv uninstall -f 3.9.5
步骤2:手动编译安装SQLite 3.31.1
我们将SQLite编译到用户私有目录,避免干扰系统自带版本:
- 创建存放自定义SQLite的目录并进入:
mkdir -p ~/.local/sqlite-3.31.1 cd ~/.local/sqlite-3.31.1
- 前往SQLite官方网站下载3.31.1版本的源码包(对应文件名
sqlite-autoconf-3310100.tar.gz),将其放到当前目录; - 解压源码包:
tar xzf sqlite-autoconf-3310100.tar.gz cd sqlite-autoconf-3310100
- 配置编译参数,指定安装路径:
./configure --prefix=$HOME/.local/sqlite-3.31.1 --enable-static
- 编译并安装:
make -j$(nproc) make install
步骤3:设置环境变量,引导pyenv链接自定义SQLite
临时设置环境变量,让Python编译时优先使用我们的SQLite:
export LDFLAGS="-L$HOME/.local/sqlite-3.31.1/lib" export CPPFLAGS="-I$HOME/.local/sqlite-3.31.1/include" export LD_RUN_PATH="$HOME/.local/sqlite-3.31.1/lib"
步骤4:重新安装Python 3.9.5
执行pyenv安装命令,此时编译会绑定我们的自定义SQLite:
pyenv install 3.9.5
步骤5:验证版本是否切换成功
切换到目标Python版本并检查SQLite版本:
pyenv local 3.9.5 python -c "import sqlite3; print(sqlite3.sqlite_version)"
如果输出3.31.1,则说明配置成功。
注意事项
- 后续若重新安装该Python版本,需重复步骤3的环境变量设置,否则会再次使用系统SQLite。
- 该操作仅影响pyenv管理的Python版本,系统自带SQLite和其他程序不受影响。
内容的提问来源于stack exchange,提问作者Paulo
相关产品推荐
相关产品推荐

