use*_*739 5 python sqlite macos
使用时出现以下错误enable_load_extension()?
AttributeError: 'sqlite3.Connection' object has no attribute 'enable_load_extension'
Run Code Online (Sandbox Code Playgroud)
我也看到这个。但是 sqlite3 应该带有 python。如何使用正确的选项重新安装它?谢谢。
https://docs.python.org/3/library/sqlite3.html#f1
The sqlite3 module is not built with loadable extension support by default, because some platforms (notably Mac OS X) have SQLite libraries which are compiled without this feature. To get loadable extension support, you must pass –enable-loadable-sqlite-extensions to configure.
检查您的 sqlite3 是否是在启用扩展加载的情况下构建的。您可以通过运行可执行文件进行检查并通过命令进行检查.dbconfig
$ sqlite3
SQLite version ...
...
sqlite> .dbconfig
...
load_extension on
Run Code Online (Sandbox Code Playgroud)
如果不是这种情况,请通过 Homebrew 安装 sqlite 或从源代码编译,请参阅文档。
然后,您想要从头开始构建 Python,并链接适当的 sqlite3 库。使用 pyenv 非常简单。PYTHON_CONFIGURE_OPTS可以通过环境变量(详细信息此处)和设置CPPFLAGS(LDFLAGS请参见此处)提供特定的构建选项
使用 pyenv 构建,假设 sqlite3 是通过 Homebrew 安装的(检查which sqlite3并brew info 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
Run Code Online (Sandbox Code Playgroud)
您可能还必须满足Python3的一些依赖关系(例如在macos brew install openssl xz gdbm上)
手动构建 Python 也非常简单,并且遵循类似的模式。满足依赖关系后,下载所需版本的 tarball 并设置编译选项以启用 sqlite3 扩展加载(并告诉 make 在哪里可以找到新编译的 SQLite 版本):
./configure --enable-loadable-sqlite-extensions --enable-optimizations --with-openssl=$(brew --prefix openssl)
LDFLAGS="-L<path-to-sqlite>" \
CPPFLAGS="-I<path-to-sqlite>" \
make -j2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2153 次 |
| 最近记录: |