症状:在我的Django应用中,当我调用from pysqlite2._sqlite import *
时,我得到了Symbol not found: _sqlite3_enable_load_extension
的回溯
背景:
- 我使用自制程序(python2.7.13)安装了python,它会自动安装sqlite
- 我正在运行macOS 10.12.3和命令行工具macOS 10.12,Xcode 8.2.1
- 我用pip安装了pysqlite(pysqlite 2.8.3)
我试过了
brew uninstall sqlite
和brew uninstall python
并重新安装- 将这些添加到我的. bash_profile
export PATH="$(brew --prefix sqlite)/bin:$PATH"
LDFLAGS="-L/usr/local/opt/sqlite/lib"
CPPFLAGS="-I/usr/local/opt/sqlite/include"
export PKG_CONFIG_PATH=“/usr/local/opt/sqlite/lib/pkgconfig”
- python-c "导入sqlite3"不返回任何错误
追溯要点:https://gist.github.com/xwchen/e9704fa34f0463d2117fe9fbb37922a1
3条答案
按热度按时间l3zydbqr1#
从这里复制答案(https://github.com/Homebrew/homebrew-core/pull/3134)。如果你像我一样,你可能在安装python3之后安装了sqlite。无论如何,如果有人偶然发现这个问题并需要答案...
如果通过自制程序安装,请首先删除SQLite、python和python3
这将删除所有副本。
然后确保安装了Xcode 8或更高版本
重要
通过重新安装命令行工具
最后通过pkg文件找到here安装命令行工具。
在搜索中查找命令行工具。(我已经下载了“Xcode 8.dmg的命令行工具(macOS 10.12)”)然后打开DMG并安装在那里找到的pkg。
现在安装SQLite,然后安装python和python 3(如果需要):
运行
brew install python --verbose
并确保没有警告,如果没有,则问题应该得到解决。别忘了
mrwjdhj32#
发生这种情况的原因可能是无法找到.so库。As explained here:
在OS X上,homebrew将sqlite3安装为“keg-only”,因为否则它会干扰系统sqlite3。这意味着libsqlite3.dylib最终位于/usr/local/opt/sqlite/lib中,而不是/usr/local/lib中
所以你可以简单地这样做:
然后您应该能够导入sqlite3。
bpsygsoo3#
在我的conda环境中,只需运行
conda install sqlite
就可以修复它。