无法通过pip install安装psycopg2包...这是因为Sierra?

Jom*_*ome 50 python pip psycopg2

我正在为我的一个讲座工作项目,我需要下载包psycopg2才能使用正在使用的postgresql数据库.不幸的是,当我尝试pip安装psycopg2时会弹出以下错误:

ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command '/usr/bin/clang' failed with exit status 1
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command '/usr/bin/clang' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么会这样?是因为Sierra没有支持某些套餐吗?提前致谢!

zga*_*ger 195

我通过安装命令行工具修复此问题

xcode-select --install
Run Code Online (Sandbox Code Playgroud)

然后通过Homebrew安装openssl并手动将我的自制软件安装的openssl链接到pip:

env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip install psycopg2
Run Code Online (Sandbox Code Playgroud)

在macOS Sierra 10.12.1上

  • xcode安装足以让我工作.很好看. (4认同)
  • 截至2022年5月和brew,这对我有用:`LDFLAGS =“-I / opt / homebrew / opt / openssl / include -L / opt / homebrew / opt / openssl / lib” pip install psycopg2-binary` (3认同)

小智 31

brew install postgresql
Run Code Online (Sandbox Code Playgroud)

如果 postgresql 存在,则运行:

brew upgrade postgresql
sudo pip install psycopg2
Run Code Online (Sandbox Code Playgroud)

在 venv:

env LDFLAGS='-L/usr/local/lib -L/usr/local/opt/openssl/lib -L/usr/local/opt/readline/lib' pip install psycopg2==2.8.4
Run Code Online (Sandbox Code Playgroud)

如果您只需要使用命令pip install psycopg2export macOSX 中的路径:

export LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib"
Run Code Online (Sandbox Code Playgroud)

  • 这对我来说非常有效,使用brew install,然后在终端中输入“env =”。然而,这完全是黑暗魔法,任何人都可以解释为什么这是必要的以及它实际上做了什么?谢谢!有关信息,2020 年 5 月的 mac 版本是 Catalina。 (2认同)

Dhe*_*nde 24

尝试通过以下方式安装:

pip install psycopg2-binary
Run Code Online (Sandbox Code Playgroud)

  • https://pypi.org/project/psycopg2-binary/ “二进制包是开发和测试的实用选择,但在生产中建议使用从源代码构建的包。” (4认同)

Apu*_*ain 18

我修复了它:

brew reinstall openssl
Run Code Online (Sandbox Code Playgroud)
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/
Run Code Online (Sandbox Code Playgroud)

  • 这对我来说也很有效,在卡特琳娜上。我使用的是 Python 版本 3.8.2,其中有“pyenv”管理我的 Python 环境和安装。你的解决方案对我有用,但我执行了:“$ python -m pip install psycopg2”,而不是其他人使用的“$ pip install psycopg2”,我们可能不知道我们正在使用和安装哪个解释器。这将确保我们将使用我的默认 python 解释器(对我来说版本是 3.8.2)来使用和安装 pip。 (2认同)

Pau*_*sen 13

使用 pipenv install psycopg2 遇到类似问题:

ld:找不到 -lssl' 的库,'clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)',“错误:命令 'clang' 失败,退出状态为 1”,'
--- -------------------------------------',

我尝试了上述所有建议,但没有一个奏效。几个月前,我在另一个 virtualenv 中遇到过这个问题,并记得读过一些关于这是psycopg2 版本问题的内容。所以我尝试用 2.7.1 和 2.8.3 安装,但都失败了。不知何故,版本 2.7.7 有效:

pipenv install psycopg2==2.7.7
Run Code Online (Sandbox Code Playgroud)

希望我有时间进一步研究这个问题以了解真正发生的事情。但现在我没有,这奏效了。


小智 12

对于 Mac OS 11.06 BigSur M1,在 pyenv 下安装

brew reinstall libpq
brew reinstall openssl
Run Code Online (Sandbox Code Playgroud)

或者如果还没有安装的话安装

brew info libpq
brew info openssl
Run Code Online (Sandbox Code Playgroud)

将 2 个导出的输出逻辑组合起来,从

为了让编译器找到 openssl@3,您可能需要设置:

导出 LDFLAGS="-L/opt/homebrew/opt/openssl@3/lib"

导出 CPPFLAGS="-I/opt/homebrew/opt/openssl@3/include"

...导出LDFLAGS =“-L / opt / homebrew / opt / libpq / lib”

导出 CPPFLAGS="-I/opt/homebrew/opt/libpq/include"

进入

export LDFLAGS="-L/opt/homebrew/opt/libpq/lib -L/opt/homebrew/opt/openssl@3/lib"
export CPPFLAGS="-I/opt/homebrew/opt/libpq/include -I/opt/homebrew/opt/openssl@3/include"
Run Code Online (Sandbox Code Playgroud)

然后你可以重新安装psycopg2,强制重新编译,否则运行时会出现这个问题

pip uninstall psycopg2 
pip install psycopg2 --no-cache-dir
Run Code Online (Sandbox Code Playgroud)


小智 6

  1. 安装/更新Xcode开发人员工具

    xcode-select --install
    
    Run Code Online (Sandbox Code Playgroud)
  2. 查询postgres路径

    find / -name pg_config  2>/dev/null
    
    Run Code Online (Sandbox Code Playgroud)
  3. 安装psycopg2,使用在步骤2中获得的路径。我的是'/usr/local/Cellar/postgresql/9.5.0/bin/pg_config'

    PATH=$PATH:/usr/local/Cellar/postgresql/9.5.0/bin/ pip install psycopg2
    
    Run Code Online (Sandbox Code Playgroud)