我正在开发一个 Python 工具,它使用带有FTS5(全文搜索)的 sqlite3 虚拟表。我想知道如何从压缩包(或任何其他方式)正确安装我的工具工作所需的要求,以便我可以打包它们以实现便携性。
目前,我设法安装了sqlite 的最新版本 tarball。但是,当我执行时:
python3 -c "import sqlite3; print(sqlite3.sqlite_version)"
# or
python2 -c "import sqlite3; print(sqlite3.sqlite_version)"
我得到3.11.0
,而sqlite3 --version
返回:3.22.0 2018-01-22 18:45:57 0c55d179733b46d8d0ba4d88e01a25e10677046ee3da1d5b1581e86726f2alt1
系统版本 sqlite3 3.22 确实支持 FTS5,正如我所做的那样pragma compile_options;
:
COMPILER=gcc-5.4.0 20160609
ENABLE_DBSTAT_VTAB
ENABLE_FTS4
**ENABLE_FTS5**
ENABLE_JSON1
ENABLE_RTREE
ENABLE_STMTVTAB
ENABLE_UNKNOWN_SQL_FUNCTION
HAVE_ISNAN
THREADSAFE=1
但是,python 版本,使用这个脚本会返回:
[(u'ENABLE_COLUMN_METADATA',), (u'ENABLE_DBSTAT_VTAB',), (u'ENABLE_FTS3',), (u'ENABLE_FTS3_PARENTHESIS',), (u'ENABLE_JSON1',), (u'ENABLE_LOAD_EXTENSION',), (u'ENABLE_RTREE',), (u'ENABLE_UNLOCK_NOTIFY',), (u'ENABLE_UPDATE_DELETE_LIMIT',), (u'HAVE_ISNAN',), (u'LIKE_DOESNT_MATCH_BLOBS',), (u'MAX_SCHEMA_RETRY=25',), (u'OMIT_LOOKASIDE',), (u'SECURE_DELETE',), (u'SOUNDEX',), (u'SYSTEM_MALLOC',), (u'TEMP_STORE=1',), (u'THREADSAFE=1',)]
因此,我的问题是:
- 有没有什么办法可以为我的应用程序制作一个 linux 便携包,在 python 和 linux 系统中都支持 sqlite3 FTS5?
- 有没有办法将 python 模块 sqlite3 链接到特定的 sqlite3 路径?
我在 Ubuntu 16.04 LTS 中尝试了所有这些,但我想在 CentOS 7 上也能正常工作。
非常感谢您提前。
有关我所做的 tarball 安装的更多详细信息:
wget "https://www.sqlite.org/src/tarball/sqlite.tar.gz?r=release" -O sqlite.tar.gz
tar -xzvf sqlite.tar.gz
cd sqlite
./configure --enable-fts5
make
sudo make install