python 未找到符号:_sqlite3_enable_load_extension-通过自制程序安装的sqlite

ldxq2e6h  于 2023-01-04  发布在  Python
关注(0)|答案(3)|浏览(172)

症状:在我的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 sqlitebrew 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

l3zydbqr

l3zydbqr1#

从这里复制答案(https://github.com/Homebrew/homebrew-core/pull/3134)。如果你像我一样,你可能在安装python3之后安装了sqlite。无论如何,如果有人偶然发现这个问题并需要答案...
如果通过自制程序安装,请首先删除SQLite、python和python3

brew uninstall --force python
brew uninstall --force python3
brew uninstall --force sqlite

这将删除所有副本。
然后确保安装了Xcode 8或更高版本

重要

通过重新安装命令行工具

xcode-select --install
sudo xcode-select --reset

最后通过pkg文件找到here安装命令行工具。
在搜索中查找命令行工具。(我已经下载了“Xcode 8.dmg的命令行工具(macOS 10.12)”)然后打开DMG并安装在那里找到的pkg。
现在安装SQLite,然后安装python和python 3(如果需要):

brew install sqlite
brew install python
brew install python3

运行brew install python --verbose并确保没有警告,如果没有,则问题应该得到解决。
别忘了

pip install setuptools --upgrade && pip3 install setuptools --upgrade
mrwjdhj3

mrwjdhj32#

发生这种情况的原因可能是无法找到.so库。As explained here
在OS X上,homebrew将sqlite3安装为“keg-only”,因为否则它会干扰系统sqlite3。这意味着libsqlite3.dylib最终位于/usr/local/opt/sqlite/lib中,而不是/usr/local/lib中
所以你可以简单地这样做:

export DYLD_LIBRARY_PATH=/usr/local/opt/sqlite/lib:/usr/lib

然后您应该能够导入sqlite3。

bpsygsoo

bpsygsoo3#

在我的conda环境中,只需运行conda install sqlite就可以修复它。

相关问题