Can't install psycopg2 package through pip install on MacOS

PythonMacosPipPsycopg2

Python Problem Overview


I am working on a project for one of my lectures and I need to download the package psycopg2 in order to work with the postgresql database in use. Unfortunately, when I try to pip install psycopg2 the following error pops up:

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

Does anyone know why this is happening? Thanks in advance!

Python Solutions


Solution 1 - Python

I fixed this by installing Command Line Tools

xcode-select --install

then installing openssl via Homebrew and manually linking my homebrew-installed openssl to pip:

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

on macOS Sierra 10.12.1

Solution 2 - Python

Try installing it with:

pip install psycopg2-binary

Solution 3 - Python

brew install postgresql

If postgresql exist then run:

brew upgrade postgresql
sudo pip install psycopg2

In 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

If you need use only the command pip install psycopg2 export the path in macOSX:

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

Solution 4 - Python

I fixed it with:

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

Solution 5 - Python

Running into a similar problem using pipenv install psycopg2:

> ld: library not found for -lssl', ' clang: error: linker command > failed with exit code 1 (use -v to see invocation)', " error: > command 'clang' failed with exit status 1", '
> ----------------------------------------',

I tried all of the recommendations above and none of them worked. I'd faced this problem in another virtualenv a few months ago and remembered reading something about this being a psycopg2 version issue. So I tried installing with 2.7.1 and 2.8.3 and both still failed. Somehow version 2.7.7 worked:

pipenv install psycopg2==2.7.7

Wish I had time to look into this further to understand what's really happening. But for now I don't and this worked.

Solution 6 - Python

For Mac OS 11.06 BigSur M1 ship, installing under a pyenv

brew reinstall libpq
brew reinstall openssl

Or install if its not already the case

brew info libpq
brew info openssl

Combine the 2 exported output logically, from

> For compilers to find openssl@3 you may need to set: > > export LDFLAGS="-L/opt/homebrew/opt/openssl@3/lib" > > export CPPFLAGS="-I/opt/homebrew/opt/openssl@3/include"

> ... > export LDFLAGS="-L/opt/homebrew/opt/libpq/lib"

> export CPPFLAGS="-I/opt/homebrew/opt/libpq/include"

into

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"

Then you can reinstall psycopg2, forcing the recompile, otherwise you will have this problem at runtime

pip uninstall psycopg2 
pip install psycopg2 --no-cache-dir

Solution 7 - Python

  1. Install/update Xcode developer tools

     xcode-select --install
    
  2. Query postgres path

     find / -name pg_config  2>/dev/null
    
  3. Install psycopg2, use the path you got in step 2. Mine was '/usr/local/Cellar/postgresql/9.5.0/bin/pg_config'

     PATH=$PATH:/usr/local/Cellar/postgresql/9.5.0/bin/ pip install psycopg2
    

Solution 8 - Python

Well, tons of different options didn't work for me, but finally!

First, try this:

brew reinstall openssl

At the end of the reinstallation process you will get basically the following lines within Caveats section, which I've put in the zshrc config file since I use macOS Big Sur (version 11.1) and zsh terminal.

Open zshrc or other config file specific to your system:

nano ~/.zshrc

Paste the following lines at the end (or change these commands accordingly to the Caveats you've got), just keep in mind that OpenSSL provided by Homebrew might conflict with the system's one (I've got a warning that macOS provides LibreSSL) but it worked well anyway:

export PATH="/opt/homebrew/opt/[email protected]/bin:$PATH"
export LDFLAGS="-L/opt/homebrew/opt/[email protected]/lib"
export CPPFLAGS="-I/opt/homebrew/opt/[email protected]/include"

Save the file and exit by pressing ^X and confirming with Yes.

Hopefully you can now install psycopg2:

pip3 install psycopg2-binary

I'm still not sure what was the root cause of the problem, it just appeared suddenly when I tried to reinstall pipenv for my project (maybe some recent system updates).

Solution 9 - Python

This works for me (on a terminal):

find / -name pg_config  2>/dev/null

then add the path:

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

os version: MacOs Sierra

I hope this helps.

Solution 10 - Python

It looks like the openssl package is not installed. Try installing it and pip install again. I'm not a macos user, but I believe that brew simplifies package management on that platform.

You might also need to install the Python development and postgresql development packages.

Solution 11 - Python

Old, but for folks using pipenv, I resolved this issue by looking at my dependency graph pipenv graph --reverse and noticing it required psycopg2-binary==2.8.2. Running pipenv install psycopg2-binary resolved the issue.

Solution 12 - Python

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

Then I could install psycopg2

Solution 13 - Python

try this -->pip install psycopg2-binary

Solution 14 - Python

In case you don't want to faff around with brew, here's the "MacOS-only solution":

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

After this, pip will gladly install psycopg2 from the source. Works with "Mojave" (macOS 10.14).

Solution 15 - Python

The only thing that worked for me was:

pip install psycopg2==2.7.7

Solution 16 - Python

Try installing: pip install psycopg2-binary it works

Solution 17 - Python

I ran into the same error on macOS Big Sur (11.5.1) and Python 3.9.6.

It turned out, the psycopg2 (as well as pandas) versions I was using were too old. The error disappeared and pip install started working fine after upgrading the above packages.

Ref: https://github.com/Azure/azure-cli/issues/12854#issuecomment-619213863

In general, if the solutions suggested here by others don't help, try upgrading the troubling python package.

Solution 18 - Python

As per current/todey condition - only solution for this is - uninstall your python 3.8 or 3.9 or so on and install ptyhon 3.7.4

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJomeView Question on Stackoverflow
Solution 1 - PythonzgangerView Answer on Stackoverflow
Solution 2 - PythonDheeraj PandeView Answer on Stackoverflow
Solution 3 - PythonIon GorincioiView Answer on Stackoverflow
Solution 4 - PythonApurva jainView Answer on Stackoverflow
Solution 5 - PythonPaul MeinshausenView Answer on Stackoverflow
Solution 6 - PythonMaxBlax360View Answer on Stackoverflow
Solution 7 - PythoneinmuyaView Answer on Stackoverflow
Solution 8 - Pythonspyker77View Answer on Stackoverflow
Solution 9 - PythonLex BryanView Answer on Stackoverflow
Solution 10 - PythonmhawkeView Answer on Stackoverflow
Solution 11 - PythonlaaksomView Answer on Stackoverflow
Solution 12 - PythonSergey LukinView Answer on Stackoverflow
Solution 13 - PythonAmit TiwariView Answer on Stackoverflow
Solution 14 - PythonLaryx DeciduaView Answer on Stackoverflow
Solution 15 - PythonClauView Answer on Stackoverflow
Solution 16 - PythonN N K TejaView Answer on Stackoverflow
Solution 17 - PythonvxxxiView Answer on Stackoverflow
Solution 18 - PythonVijay ChoudharyView Answer on Stackoverflow