如何在Mac上升级Python的SQLite3模块使用的SQLite版本?

Tay*_*ith 10 python sqlite macos

我想在Python中使用SQLite版本3.8,但SQLite3模块使用的是过时版本.我在Mac上安装了SQLite版本3.8.4.3,但sqlite3.sqlite_version仍然返回3.7.13.

我在SO和其他地方做了很多搜索,但似乎无法找到明确的答案.

谢谢!

aba*_*ert 6

根据您的评论,您的问题是您预装的 sqlite 3.7 在您的路径上比第三方 3.8 更高。这意味着当你构建时pysqlite2,默认情况下,它会找到并使用 3.7,所以它对你没有任何好处。而且您可能不想为了解决这个问题而改变整个路径。

不过没关系,只要在构建时先找到 3.8,运行时先出现什么并不重要;3.8 的路径将被烘焙到模块中。有很多方法可以做到这一点,但最简单的是这样的:

$ brew install sqlite3
$ sudo -s
# LDFLAGS=-L/usr/local/opt/sqlite/lib CPPFLAGS=-I/usr/local/opt/sqlite/include pip2.7 install pysqlite
# ^D
$ python
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.7.13'
>>> import pysqlite2.dbapi2
>>> pysqlite2.dbapi2.sqlite_version
'3.8.6'
Run Code Online (Sandbox Code Playgroud)

LDFLAGSCPPFLAGS变量从输出来了brew install sqlite3一步。如果您sqlite3以其他方式安装,则需要获取适当的值 — 可能是/usr/local/liband /usr/local/include,但如果不是,则搜索libsqlite3.dyliband sqlite3.h

请注意,如果您完全按照这些步骤进行操作,您将获得 的非胖版本libsqlite3,这意味着它pysqlite2无法在 32 位模式下运行。我怀疑这对你来说是个问题,但如果是,你可以安装它--universal,或者使用不同的安装程序而不是 Homebrew。