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

时间:2017-02-02 04:56:26

标签: python sqlite homebrew pysqlite

症状:在我的Django应用程序中,当我致电from pysqlite2._sqlite import *时,我会在

时获得追溯Symbol not found: _sqlite3_enable_load_extension

背景:

  • 我用自制的安装了python(python 2.7.13),自动安装了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

2 个答案:

答案 0 :(得分:5)

  

从这里复制答案(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

答案 1 :(得分:0)

可能会发生,因为它无法找到.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。