【问题标题】:Symbol not found: _sqlite3_enable_load_extension - sqlite installed via homebrew未找到符号:_sqlite3_enable_load_extension - sqlite 通过自制软件安装
【发布时间】:2017-06-19 01:34:58
【问题描述】:

症状:在我的 Django 应用程序中,当我调用 from pysqlite2._sqlite import * 时,我得到了回溯 Symbol not found: _sqlite3_enable_load_extension

背景:

  • 我使用 homebrew (python 2.7.13) 安装了 python,它自动安装了 sqlite
  • 我正在使用命令行工具 macOS 10.12、Xcode 8.2.1 运行 macOS 10.12.3
  • 我已经使用 pip (pysqlite 2.8.3) 安装了 pysqlite

我试过了

  • 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 "import sqlite3" 不返回任何错误

回溯要点:https://gist.github.com/xwchen/e9704fa34f0463d2117fe9fbb37922a1

【问题讨论】:

  • 我现在有同样的Symbol not found: _sqlite3_enable_load_extension 错误。我重新安装了 python2、python3 和 sqlite,但没有成功,我再也找不到对我有帮助的谷歌页面了。我还添加了几个环境变量。像LDFLAGSCPPFLAGSPKG_CONFIG_PATHDYLD_LIBRARY_PATH 我在

标签: python sqlite homebrew pysqlite


【解决方案1】:

这可能是因为它无法找到 .so 库。 As explained here:

在 OS X 上,自制软件将 sqlite3 安装为“仅桶装”,否则它会干扰系统 sqlite3。这意味着 libsqlite3.dylib 最终位于 /usr/local/opt/sqlite/lib,而不是 /usr/local/lib

所以你可以简单地这样做:

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

那么你应该可以导入 sqlite3 了。

【讨论】:

  • +1 我在使用 python@3.9 时遇到了这个问题。无需重新安装即可解决,只需:export DYLD_LIBRARY_PATH="/opt/homebrew/Cellar/sqlite/3.35.5/lib:/usr/local/lib:/usr/local/include:/usr/lib:/usr/include"
【解决方案2】:

从此处复制答案 (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

最后通过找到 here 的 pkg 文件安装命令行工具。

在搜索中寻找命令行工具。 (我已经下载了“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

【讨论】:

  • 这对我不起作用。几个月以来,我一直在尝试建立一个在虚拟环境中使用 python 2.7 运行的 oder 项目。但我不断收到错误消息找不到符号:_sqlite3_enable_load_extension。有人可以帮我吗?
  • 您应该避免使用系统python和任何自制版本的python进行开发。请改用pyenv。运行brew install pyenvpyenv install 2.7.18 并且您可以将 shell 环境中的本地 python 设置为 pyenv shell 2.7.18
猜你喜欢
  • 1970-01-01
  • 2015-01-11
  • 2020-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多