【问题标题】:Upgrading SQLite3 version used in python3 on linux?升级linux上python3中使用的SQLite3版本?
【发布时间】:2018-09-29 22:04:32
【问题描述】:

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

import sqlite3
print(sqlite3.sqlite_version)

以下代码仍然给我 3.17。我已经用谷歌搜索了如何升级版本,但大多数 solutions 似乎指的是仅 python 2 的 pysqlite。其他解决方案谈论的是complicated compiling processes,这让我很头疼。

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

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

【问题讨论】:

  • Python 根本不使用外部 sqlite3 可执行文件,它使用包含在其自己的发行版中的库。这就是解决方案谈论编译的原因,这是您可以替换它的唯一方法。为什么需要这样做?
  • 那为什么我的 CentOS 和 Windows 机器上的相同版本的 python 有非常不同的 sqlite3 版本。我需要新的 sqlite 版本,因为我使用外键添加到数据库的索引似乎没有与旧的 sqlite 版本一起使用。当我使用安装在 CentOS 上的最新版本或我的 windows python 安装中包含的版本时,它确实使用了我的索引。

标签: python linux python-3.x sqlite


【解决方案1】:

sqlite3 是一种外部库。 所以,你需要设置外部库路径。

尝试下一个命令

printenv LD_LIBRARY_PATH

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

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

export LD_LIBRARY_PATH="/usr/local/lib"

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

import sqlite3
print(sqlite3.sqlite_version)

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

sudo vi /etc/profile

并添加导出代码

export LD_LIBRARY_PATH="/usr/local/lib"

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

【讨论】:

    【解决方案2】:

    在 Ubuntu 中,您可以添加 dqlite 存储库并使用 apt 更新它。

    sudo add-apt-repository -y ppa:dqlite/stable
    sudo apt update
    sudo apt install sqlite3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-16
      • 1970-01-01
      • 2021-11-17
      相关资源
      最近更新 更多