从 python3 shell 导入 sqlite 时,brew 安装了 python3 并使用 --enable-loadable-sqlite-extensions 手动编译了 python3 失败。请帮忙!
user2050671
问问题
2995 次
2 回答
2
该模块被命名sqlite3
,而不是sqlite
:
import sqlite3
http://docs.python.org/3/library/sqlite3.html
更新:现在我们已经清除了模块名称,报告的问题:
ImportError: No module named '_sqlite3'
意味着您的 Python 实例找不到 C 扩展模块,它是标准库_sqlite3.so
中模块的一部分。sqlite3
由于dbapi2.py
回溯中的文件路径看起来合理,因此问题可能不是路径问题(sys.path
)。扩展模块很可能_sqlite3
无法构建或链接。检查 Python 构建的输出是否有错误。OS X 10.8 包含一个版本,sqlite3
但出于安全原因,它不包含可选的可加载扩展功能。您的 Python 构建可能包含以下消息:
Failed to build these modules:
_sqlite3
并且,早些时候,这个:
*** WARNING: renaming "_sqlite3" since importing it failed: dlopen(build/lib.macosx-10.8-x86_64-3.3-pydebug/_sqlite3.so, 2): Symbol not found: _sqlite3_enable_load_extension
Referenced from: build/lib.macosx-10.8-x86_64-3.3-pydebug/_sqlite3.so
Expected in: flat namespace
in build/lib.macosx-10.8-x86_64-3.3-pydebug/_sqlite3.so
解决方案是构建并安装使用可加载扩展功能构建的 sqlite3 的单独副本。如果您使用的是 Homebrew,则其带有选项的sqlite
配方with-functions
应该可以做到这一点。然后重建 Python。
于 2013-02-11T18:06:43.900 回答
1
Homebrew 为 python3 提供 sqlite3 支持和可加载模块。
brew install python3
会做正确的事情(和brew sqlite,也是)。
有一个错误,可能触动了您,但已修复
于 2013-02-12T10:49:32.290 回答