You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让pyenv编译Python时指定特定版本的SQLite

问题:本地搭建Python 3.9.5 + SQLite 3.31.1环境失败(SQLite版本未同步)

我使用Ubuntu 22.04系统,自带Python版本为3.10.4、SQLite版本为3.37.2。由于代码部署的服务器环境为Python 3.9.5 + SQLite 3.31.1,因此需要在本地搭建相同环境。

使用pyenv成功解决了Python版本问题,但SQLite版本未同步。于是我从源码编译了SQLite 3.31.1,步骤如下:

~$ mkdir -p ~/usrapps/src
~$ cd ~/usrapps/src/
~/usrapps/src$ wget https://www.sqlite.org/2020/sqlite-autoconf-3310100.tar.gz
~/usrapps/src$ tar xvvf sqlite-autoconf-3310100.tar.gz 
~/usrapps/src$ cd sqlite-autoconf-3310100/
~/usrapps/src/sqlite-autoconf-3310100$ mkdir -p ~/usrapps/sqlite3311
~/usrapps/src/sqlite-autoconf-3310100$ ./configure --prefix=/home/paulo/usrapps/sqlite3311
~/usrapps/src/sqlite-autoconf-3310100$ make
~/usrapps/src/sqlite-autoconf-3310100$ make install
~/usrapps/src/sqlite-autoconf-3310100$ cd ~/

之后我尝试三种配置场景,通过pyenv安装Python 3.9.5(注:brew-pyenv-i是CC="$(brew --prefix gcc)/bin/gcc-12" pyenv install的别名,用于解决安装时的OpenSSL缺失问题),每次安装前都会卸载pyenv已安装的Python:

场景1

~$ LDFLAGS="-L/home/paulo/usrapps/sqlite3311/lib" CPPFLAGS="-I/home/paulo/usrapps/sqlite3311/include" brew-pyenv-i 3.9.5

场景2

~$ PYTHON_CONFIGURE_OPTS="LD_RUN_PATH=/home/paulo/usrapps/sqlite3311/lib LDFLAGS=-L/home/paulo/usrapps/sqlite3311/lib" brew-pyenv-i 3.9.5

场景3

~$ PYTHON_CONFIGURE_OPTS="LD_RUN_PATH=/home/paulo/usrapps/sqlite3311/lib LDFLAGS=-L/home/paulo/usrapps/sqlite3311/lib CPPFLAGS=-I/home/paulo/usrapps/sqlite3311/include" brew-pyenv-i 3.9.5

三种场景均成功安装Python 3.9.5,但检查SQLite版本时仍为系统自带的3.37.2,而非编译的3.31.1:

~$ pyenv shell 3.9.5
~$ python
Python 3.9.5 (default, Aug 26 2022, 08:45:14) 
[GCC 12.1.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.37.2'

我希望避免使用pysqlite3,因为这需要修改代码,而我的目标并非在应用中使用多版本SQLite。

内容的提问来源于stack exchange,提问作者Paulo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 02:15:59