无法通过pip install安装psycopg2软件包…这是因为Sierra吗?


78

我正在为一个讲座做一个项目,我需要下载软件包psycopg2才能与正在使用的postgresql数据库一起使用。不幸的是,当我尝试点子安装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

有人知道为什么会这样吗?是因为Sierra不支持某些软件包吗?提前致谢!

Answers:


300

我通过安装命令行工具解决了这个问题

xcode-select --install

然后通过Homebrew安装openssl并手动将安装了homebrew的openssl链接到pip:

env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip install psycopg2

在macOS Sierra 10.12.1上


4
xcode安装足以让我正常运行。好期待。
亚当·斯塔吉尔

安装dev-tools之后,我也得到了它
BBischof

也为我工作。非常感谢!
Nikolay Marinov

对我来说也很努力,谢谢,永久解决方案是什么?
Ajay Kumar,


18
brew install postgresql

如果存在postgresql,则运行:

brew upgrade postgresql
sudo pip install psycopg2

在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

如果只需要使用命令pip install psycopg2在macOSX中导出路径:

export LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib"

1
使用brew install然后在终端中输入“ env =”,这对我来说效果最佳。但是,这是完全的黑魔法,任何人都可以解释为什么这是必要的以及它实际上做了什么吗?谢谢!有关信息,Mac版本在2020年5月为Catalina。
勒布

11

使用pipenv安装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

希望我有时间对此进行深入研究,以了解实际情况。但是现在我不这样做了。


10

我用以下方法修复了它:

brew reinstall openssl
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/

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

1
也为我工作
Greg Eremeev

该出口将需要永远添加到我的.bashrc吗?
拉斐尔·戈麦斯Francisco

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

    xcode-select --install
    
  2. 查询postgres路径

    find / -name pg_config  2>/dev/null
    
  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
    

2

这对我有用(在终端上):

find / -name pg_config  2>/dev/null

然后添加路径:

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.5/bin/

操作系统版本:MacOs Sierra

我希望这有帮助。


2
这是假设您已经在Mac上安装了Postgres.app,并且没有使用mac端口,home brew,EnterpriseDB安装程序或在Mac上打包/安装postgresql服务器的其他方式,是吗?
苏格兰,

哦,原来的问题是关于-lssl库,然后是“ clang”,但不是pg_config工具。Clang在Xcode中,另一件事在openssl库中。用户@zganger对这个问题有正确的答案。(我到这里是为了寻找pg_config问题,所以您的回答帮助了我很多,但这不是问题要问的)。
苏格兰,

1

似乎未安装openssl软件包。尝试pip install再次安装。我不是macOS用户,但我相信这可以brew简化该平台上的软件包管理。

您可能还需要安装Python开发和postgresql开发包。


1

很老了,但是对于使用pipenv的人来说,我通过查看依赖图pipenv graph --reverse并注意到它是必需的来解决了这个问题psycopg2-binary==2.8.2。运行pipenv install psycopg2-binary解决了该问题。




0

如果您不想花钱brew,这是“仅限MacOS的解决方案”:

sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

此后,pip将很高兴psycopg2从源代码安装。与“ Mojave”(macOS 10.14)一起使用。


-3

根据当前/当前状态-唯一的解决方案是-卸载python 3.8或3.9等并安装ptyhon 3.7.4


鉴于在2016年提出了这个问题,我非常怀疑“卸载Python 3.8 / 3.9和安装Python 3.7”是否可以解决OP的问题
David Buck

错了 我运行@Apurva的答案,它为我工作。我正在使用Catalina,并且有多个Python版本。stackoverflow.com/a/58722268/3255762
Angelito
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.