我正在开发一个Python工具,该工具使用带有FTS5(全文搜索)的sqlite3虚拟表。我想知道如何从tarball(或任何其他方式)正确安装工具正常工作所需的要求,以便为便携性打包它们。
目前,我设法安装了最新版本的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
我pragma compile_options;
获得的系统版本sqlite3 3.22确实支持FTS5 :
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',)]
因此,我的问题是:
我在Ubuntu 16.04 LTS中尝试了所有这些方法,但我也希望在CentOS 7上也能正常工作。
提前非常感谢您。
从我做过的压缩包中获取有关安装的更多详细信息:
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
我认为是一个链接问题!我与您遵循相同的安装步骤,并获得了相同的结果:
$ python ./test.py
[(u'ENABLE_COLUMN_METADATA',), (u'ENABLE_FTS3',), (u'ENABLE_RTREE',), (u'ENABLE_UNLOCK_NOTIFY',), (u'ENABLE_UPDATE_DELETE_LIMIT',), (u'MAX_SCHEMA_RETRY=25',), (u'OMIT_LOOKASIDE',), (u'SECURE_DELETE',), (u'SOUNDEX',), (u'SYSTEM_MALLOC',), (u'TEMP_STORE=1',), (u'THREADSAFE=1',)]
NO
但是,当您在Linux上通过configure / make / make install进行安装时,通常会进入/usr/local/lib
。为了确保python在运行时针对.so
我使用的正确链接LD_LIBRARY_PATH
。在这种情况下,我得到了:
$ LD_LIBRARY_PATH=/usr/local/lib python ./test.py
[(u'COMPILER=gcc-4.8.5',), (u'ENABLE_FTS5',), (u'HAVE_ISNAN',), (u'TEMP_STORE=1',), (u'THREADSAFE=1',)]
YES
此外,在安装库时,您可能必须进行更新ldconfig
。在我的系统上(Ubuntu 14.04):
$ sudo ldconfig
$ python ./test.py
[(u'COMPILER=gcc-4.8.5',), (u'ENABLE_FTS5',), (u'HAVE_ISNAN',), (u'TEMP_STORE=1',), (u'THREADSAFE=1',)]
YES
注意,不再需要使用LD_LIBRARY_PATH,并且指向正确库的python链接。为此,您需要将/usr/local/lib
文件夹放在您的ld.so.conf
某处...对于我来说,这是在:
$ grep -ir local /etc/ld.so.conf.d/
/etc/ld.so.conf.d/libc.conf:/usr/local/lib
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句