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

时间:2016-09-29 10:29:48

标签: python pip psycopg2

我正在为我的一个讲座工作,我需要下载包psycopg2才能使用正在使用的postgresql数据库。不幸的是,当我尝试pip install 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没有支持某些套餐吗?提前谢谢!

16 个答案:

答案 0 :(得分:122)

我通过安装命令行工具

解决了这个问题
xcode-select --install

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

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

在macOS Sierra 10.12.1

答案 1 :(得分:4)

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

  

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

我尝试了以上所有建议,但没有一个起作用。几个月前,我在另一个virtualenv中遇到了这个问题,并记得读过一些关于psycopg2 version issue的内容。因此,我尝试使用2.7.1和2.8.3进行安装,但两者均仍然失败。 2.7.7版本以某种方式起作用:

pipenv install psycopg2==2.7.7

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

答案 2 :(得分:3)

  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
    

答案 3 :(得分:2)

好吧,很多不同的选项对我都不起作用,但最终!

首先,试试这个:

brew reinstall openssl

在重新安装过程结束时,您基本上会在 Caveats 部分中看到以下几行,因为我使用 macOS Big Sur(版本 11.1)和 zsh,因此我已将其放入 zshrc 配置文件中终端。

打开 zshrc 或其他特定于您系统的配置文件:

nano ~/.zshrc

在最后粘贴以下几行(或根据您的注意事项更改这些命令),请记住 Homebrew 提供的 OpenSSL 可能与系统的 OpenSSL 冲突(我'我收到警告说 macOS 提供了 LibreSSL)但它仍然运行良好:

export PATH="/opt/homebrew/opt/openssl@1.1/bin:$PATH"
export LDFLAGS="-L/opt/homebrew/opt/openssl@1.1/lib"
export CPPFLAGS="-I/opt/homebrew/opt/openssl@1.1/include"

保存文件并按 ^X 并按 确认退出。

希望您现在可以安装 psycopg2:

pip3 install psycopg2-binary

我仍然不确定问题的根本原因是什么,它只是在我尝试为我的项目重新安装 pipenv 时突然出现(可能是最近的一些系统更新)。

答案 4 :(得分:1)

这适用于我(在终端上):

find / -name pg_config  2>/dev/null

然后添加路径:

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

os版本:MacOs Sierra

我希望这会有所帮助。

答案 5 :(得分:1)

尝试通过以下方式安装它:

pip install psycopg2-binary

答案 6 :(得分:1)

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"

答案 7 :(得分:1)

env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" \
brew upgrade openssl

然后我可以安装psycopg2

答案 8 :(得分:1)

尝试--pip安装psycopg2-binary

答案 9 :(得分:0)

看起来好像没有安装openssl软件包。尝试再次安装它和ID ELEMENT_TYPE POSITION LINE_NO VALIDATION ERROR 1 Field MSH.9.3 1 Component required 2 Field PID.7 2 Invalid date time format : '1957009' 3 Component PID.9.7 2 Invalid table entry value : '3216' for table Name Type 4 Component PID.9.7 2 Value '3216' length (4) exceed limit (1) 5 Component PID.11.6 2 Invalid table entry value : 'INDIA' for table Country Code 6 Component PID.11.6 2 Value 'INDIA' length (5) exceed limit (3) 7 Field PID.12 2 Field should not contain component(s) 8 Component PID.18.1 2 Field required but has no value. 9 Field ORC.5 4 Invalid table entry value : 'D' for table Order status 10 Component ORC.7.4 4 Invalid date time format : '20103102300' 11 Component ORC.7.5 4 Invalid date time format : '216061102300' 12 Field ORC.15 4 Invalid date time format : '201606310230' 13 Field OBR.14 5 Invalid date time format : '201208056' 14 Field OBR.22 5 Invalid date time format : '201280058' 15 SubComponent OBR.27.1.1 5 Invalid numeric format : 'R' 16 Component OBR.27.4 5 Invalid date time format : '2012070957' 17 Component OBR.32.2 5 Invalid date time format : 'VRNEY,SCT' 。我不是macos用户,但我相信brew简化了该平台上的包管理。

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

答案 10 :(得分:0)

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

答案 11 :(得分:0)

我用以下方法修复了它:

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

答案 12 :(得分: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)一起使用。

答案 13 :(得分:0)

唯一对我有用的是:

       sql_string='INSERT INTO {} '.format(column_name)  

答案 14 :(得分:0)

尝试安装: pip install psycopg2-binary 它有效

答案 15 :(得分:-3)

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