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模块(内置于标准库中)?
您认为 的版本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 版本兼容的版本。
| 归档时间: |
|
| 查看次数: |
1960 次 |
| 最近记录: |