在Debian上升级Python的sqlite3

Bas*_*asj 8 python sqlite debian pip

我在我的Debian上的linux2上使用Python 2.7.6(默认,2014年3月22日,22:59:56)[GCC 4.8.2],我通常使用模块sqlite3没有任何问题.

编译了一个Sqlite扩展 spellfix,加载时出现此错误:

sqlite3.OperationalError:./spellfix.so:未定义的符号:sqlite3_malloc64

我想这可能是因为sqlite3模块太旧了:

import sqlite3
print sqlite3.version          # 2.6.0
print sqlite3.sqlite_version   # 3.8.2
Run Code Online (Sandbox Code Playgroud)

(在sqlite3.sqlite_version3.8.7.x的另一台机器上,扩展加载正常).

我试过了:

pip install --upgrade pysqlite
Run Code Online (Sandbox Code Playgroud)

但它仍然是相同的:sqlite3.sqlite_version保持3.8.2.

如何升级Python sqlite3模块(内置于标准库中)?

Jac*_*din 5

您认为 的版本sqlite3导致问题是正确的。sqlite_malloc64是在3.8.7 版中引入的。

与其尝试升级sqlite3可能会破坏 Python 安装的 Python模块,我建议您编译spellfix.c3.8.2版中包含的版本。

你可以在这里找到源:https : //www.sqlite.org/src/tarball/27392118/SQLite-27392118.tar.gz

从那里你可以建立合并:

sh configure
make sqlite3.c
Run Code Online (Sandbox Code Playgroud)

您将在文件夹中找到sqlite3.h和。然后使用以下命令编译扩展:sqlite3ext.htsrcspellfix.c

gcc -g -fPIC -shared spellfix.c -I ../../tsrc -o spellfix.dll
Run Code Online (Sandbox Code Playgroud)

并且您应该获得spellfix.dll与您的 sqlite3 版本兼容的版本。