5

我正在尝试让 Spatialite 与我的 django 应用程序一起使用,但是,我遇到了以下问题:

 raise ImproperlyConfigured('The pysqlite library does not support C extension loading. '
django.core.exceptions.ImproperlyConfigured: The pysqlite library does not support C extension loading. Both SQLite and pysqlite must be configured to allow the loading of extensions to use SpatiaLite.
make: *** [syncdb] Error 1

使用 ubuntu 12.04,我pip在同一个用户中使用 sudo 安装了 pysqlite。我也尝试过编译 pysqlite 并启用自己的扩展加载。

帮助?

4

2 回答 2

4

pysqlite 的默认设置是在没有扩展加载支持的情况下构建。因此,仅重建将无济于事。您需要更改设置(在 setup.cfg 中)。

所以我建议下载为 tarball,并查看 setup.cfg:

[build_ext]
#define=
#include_dirs=/usr/local/include
#library_dirs=/usr/local/lib
libraries=sqlite3
define=SQLITE_OMIT_LOAD_EXTENSION

最后一行是问题所在。最简单的方法就是将其注释掉(在行首添加 # ),所以它看起来像:

[build_ext]
#define=
#include_dirs=/usr/local/include
#library_dirs=/usr/local/lib
libraries=sqlite3
# define=SQLITE_OMIT_LOAD_EXTENSION

然后根据 tarball 中的说明进行重建(参见 doc/install-source.txt)

于 2012-06-29T23:53:52.777 回答
0

这里提出的解决方案似乎适用于旧系统/Python2。对于较新版本的 Python(例如 3.8),sqlite 作为标准库的一部分提供,并且有必要使用适当配置的 sqlite 库构建 Python。

例如,在使用 homebrew 和 pyenv 的 MacOS 上(假设满足 Python 依赖项并且通过 homebrew 安装 sqlite 并启用扩展加载):

PYTHON_CONFIGURE_OPTS="--enable-loadable-sqlite-extensions --enable-optimizations --with-openssl=\$(brew --prefix openssl)" \
LDFLAGS="-L/usr/local/opt/sqlite/lib" \
CPPFLAGS="-I/usr/local/opt/sqlite/include" \
pyenv install 3.8.2

有关详细的解决方案,请查看此处

于 2020-03-02T01:30:32.817 回答