在 linux 上升级 python3 中使用的 SQLite3 版本?

Yan*_*ano 7 python linux sqlite python-3.x

我需要升级我的 python 3 使用的 sqlite3 版本,但似乎没有明确的答案,我不明白是什么决定了 python 使用的 sqlite3 版本。我正在运行安装了 python 3.6.4 的 CentOS7。CentOS 安装了 3.7.17 版的 sqlite,我将其升级到 3.23.1,认为 python 也会使用这个从未使用过的 sqlite 版本。

import sqlite3
print(sqlite3.sqlite_version)
Run Code Online (Sandbox Code Playgroud)

下面的代码仍然给了我 3.17。我在谷歌上搜索了如何升级版本,但大多数解决方案似乎都指的是 pysqlite,它只是 python 2。其他解决方案谈论复杂的编译过程,这让我无法理解。

我不明白是什么决定了 python 使用的 sqlite 版本。是由python版本决定的,操作系统安装的sqlite版本?我也在我的 Windows PC 上运行 python 3.6.4,它说我运行的是 3.14.2,所以似乎 sqlite 版本不依赖于 python 版本。

什么决定了python使用的sqlite版本?没有更直接的方法来升级python 3的sqlite版本吗?

小智 5

sqlite3 是一种外部库。因此,您需要设置外部库路径。

尝试下一个命令

printenv LD_LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)

如果您以前从未设置过,结果将为空。

下一个命令将使用已安装的 sqlite3 for python 工作

export LD_LIBRARY_PATH="/usr/local/lib"
Run Code Online (Sandbox Code Playgroud)

然后,您可以执行并获得您安装的正确版本

import sqlite3
print(sqlite3.sqlite_version)
Run Code Online (Sandbox Code Playgroud)

但是当您注销并再次登录时,此方法将被重置。所以,如果你想在每次登录时都注册那个环境变量,你应该编辑 /etc/profile

sudo vi /etc/profile
Run Code Online (Sandbox Code Playgroud)

并添加导出代码

export LD_LIBRARY_PATH="/usr/local/lib"
Run Code Online (Sandbox Code Playgroud)

然后,如果您注销并再次登录,您可以看到 LD_LIBRARY_PATH 已注册。