我想在Python中使用SQLite版本3.8,但SQLite3模块使用的是过时版本。我在Mac上安装了SQLite版本3.8.4.3,但sqlite3.sqlite_version仍然返回3.7.13。
我在SO和其他地方做了很多搜索,但似乎无法找到明确的答案。
谢谢!
答案 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'
LDFLAGS
和CPPFLAGS
变量来自brew install sqlite3
步骤的输出。如果您以其他方式安装了sqlite3
,则需要获取相应的值 - 可能是/usr/local/lib
和/usr/local/include
,但如果没有,请搜索libsqlite3.dylib
和sqlite3.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
确认您具有最新版本。
答案 3 :(得分:0)
这在 Windows 上对我有用。