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

时间:2014-10-13 17:54:08

标签: python macos sqlite

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

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

谢谢!

4 个答案:

答案 0 :(得分:2)

根据您的评论,您的问题是您的预安装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'

LDFLAGSCPPFLAGS变量来自brew install sqlite3步骤的输出。如果您以其他方式安装了sqlite3,则需要获取相应的值 - 可能是/usr/local/lib/usr/local/include,但如果没有,请搜索libsqlite3.dylibsqlite3.h

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

答案 1 :(得分:1)

我认为最简单的方法是将Python更新到最新版本,因为sqlite3随Python一起提供。

否则还必须更新pysqlite包。在Linux下有一个预编译的包python-sqlite。

您可以使用easy_install执行此操作。要构建此包,您需要一些包。使用新安装的sqlite3版本构建pysqlite,在您的情况下为3.8.4.3。

sudo easy_install pysqlite

sudo pip install --upgrade pysqlite

答案 2 :(得分:1)

如果您将Anaconda用作程序包管理器,请运行PropertyInfo[] props = typeof(YourClass).GetProperties();

运行conda install -c anaconda sqlite确认您具有最新版本。

Source

答案 3 :(得分:0)

这在 Windows 上对我有用。

  1. 为Sqlite3下载最新的预编译二进制文件 https://www.sqlite.org/download.html
  2. 找到 DLL 库 sqlite3.dll
  3. 找到存储 Python sqlite3.dll 的 Python 库文件夹
  4. 备份 Python sqlite3.dll 并替换为最新的 sqlite3.dll