我在Debian上的linux2上使用了Python2.7.6(默认值,2014年3月22日,22:59:56)[gcc4.8.2],我通常使用模块sqlite3
。在
我compiled a Sqlite extensionspellfix
,我在加载它时得到了这个错误:
sqlite3.OperationalError: ./spellfix.so: undefined symbol: sqlite3_malloc64
我想可能是因为sqlite3
模块太旧了:
import sqlite3
print sqlite3.version # 2.6.0
print sqlite3.sqlite_version # 3.8.2
(在另一台机器上,sqlite3.sqlite_version
为3.8.7.x,扩展加载良好)。在
我试过了:
^{pr2}$但还是一样:sqlite3.sqlite_version
保持3.8.2。在
如何升级Python sqlite3模块(内置于标准库中)?
这里是一个手动解决方案(不推荐,但由于我没有找到用于Linux安装的libsqlite3v3.23.1的backports,我尝试了这个方法,并且成功了):
从https://packages.debian.org/search?keywords=libsqlite3-0下载更新版本。以下是直接链接:
在临时文件夹中解压缩.deb:
^{pr2}$或者
那么
它应该起作用:
免责声明:这有点老套,但它是有效的。在
您认为
sqlite3
的版本导致了问题,这是正确的。sqlite_malloc64
与{a1}一起引入。在我建议编译3.8.2版中包含的
spellfix.c
版本,而不是尝试升级Pythonsqlite3
模块,这可能会导致Python安装中断。在您可以在这里找到来源:https://www.sqlite.org/src/tarball/27392118/SQLite-27392118.tar.gz
在此基础上,您可以建立合并:
您将在}。然后编译
^{pr2}$tsrc
文件夹中拥有sqlite3.h
和{spellfix.c
扩展名:您应该得到一个兼容的
spellfix.dll
,它与您的sqlite3版本一起运行。在相关问题 更多 >
编程相关推荐