我正在开发一个Python工具,它使用带有FTS5(全文搜索)的sqlite3虚拟表。我想知道如何从tarball(或任何其他方式)正确安装我的工具所需的要求,以便我可以打包,以便于携带。在
目前,我成功地安装了latest release tarball of sqlite。但是,当我执行以下操作时:
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;
并得到:
但是,python版本使用this script返回以下内容:
[(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',)]
因此,我的问题是:
我在Ubuntu16.04LTS上尝试了所有这些,但我也希望在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
感谢您的回答@urban和{a2}。我觉得你的回答很有建设性。在
我认为@saaj的问题是它需要额外的包,特别是
apsw
包,这与pypypy不兼容。我无法使它成功,但可能是我的错。在我真的很喜欢“城市回答”。我做了这个过程,让它工作。我把这个答案标为正确。在
不过,我想补充我自己的答案。很有攻击性,但对我有效。我用以下Dockerfile创建了一个Ubuntu docker:
后来,我在Ubuntu docker里面做了。在这个过程中,我删除了sqlite3并安装了它的依赖项,这是我在following article中找到的。后来我重新安装了python。在
^{pr2}$我认为这是一个连接问题!我按照与您相同的安装步骤,得到了相同的结果:
但是,当您在Linux上通过configure/make/makeinstall安装某些东西时,它通常在
^{pr2}$/usr/local/lib
中进行。为了确保运行时的python链接指向正确的.so
,我使用了LD_LIBRARY_PATH
。在这种情况下,我得到:另外,在安装库时,您可能需要更新
ldconfig
。在我的系统上(Ubuntu 14.04):请注意,不再需要使用LD_LIBRARY_PATH,并且python链接指向正确的lib。要实现这一点,您需要在您的
ld.so.conf
中的某个地方有/usr/local/lib
文件夹。。。对我来说这是在:简单的方法是使用^{} (另一个pythonsqlite包装器)。它的API与
sqlite3
只是有点不同,你不能只是pip安装它(除非你对过时的版本没意见),但其余的都很好,你可以拥有SQLite最新的特性。在然后
^{pr2}$退货:
用Python定制编译是很困难的。更多细节请参见this article by Charles Leifer。在
相关问题 更多 >
编程相关推荐