[Django]-"Failed building wheel for psycopg2" – MacOSX using virtualenv and pip

108πŸ‘

For MacOS users

After trying all the above methods (which did not work for me on MacOS 10.14), that one worked :

  • Install openssl with brew install openssl if you don’t have it already.
  • add openssl path to LIBRARY_PATH :
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/
  • install psycopg2 with pip pip3 install psycopg2
πŸ‘€Romain

91πŸ‘

I had the same problem on Arch linux. I think that it’s not an OS dependant problem. Anyway, I fixed this by finding the outdated packages and updating then.

pip uninstall psycopg2
pip list --outdated
pip install --upgrade wheel
pip install --upgrade setuptools
pip install psycopg2

61πŸ‘

I was also getting same error.
Using Python 3.7.3 and pip 19.1.1.

I used following command.

pip install psycopg2-binary==2.8.3

21πŸ‘

TDLR

If you aren’t used to installing Python C-extensions, and psycopg2 isn’t a core part of your work, try

pip install psycopg2-binary

Building Locally

psycopg2 is a C-extension, so it requires compilation when being installed by pip. The Build Prerequisites section of the docs explain what must be done to make installation via pip possible. In summary (for psycopg 2.8.5):

  • a C compiler must be installed on the machine
  • the Python header files must be installed
  • the libpq header files must be installed
  • the pg_config program must be installed (it usually comes with the libpq headers) and on $PATH.

With these prerequisites satisfied, pip install psycopg2 ought to succeed.

Installing pre-compiled wheels

Alternatively, pip can install pre-compiled binaries so that compilation (and the associated setup) is not required. They can be installed like this:

pip install psycopg2-binary

The docs note that

The psycopg2-binary package is meant for beginners to start playing with Python and PostgreSQL without the need to meet the build requirements.

but I would suggest that psycopg2-binary is often good enough for local development work if you are not using psycopg2 directly, but just as a dependency.

Concluding advice

Read the informative installation documentation, not only to overcome installation issues but also to understand the impact of using the pre-compiled binaries in some scenarios.

πŸ‘€snakecharmerb

18πŸ‘

I had same problem and this appears to be a Mojave Issue, I was able to resolve with:

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

17πŸ‘

For MacOS users, this question has the correct solution:

install command line tools if necessary:

xcode-select --install

then

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

πŸ‘€John

15πŸ‘

For Mac OS X users:

1. First check your postgresql path by running this command in terminal:

pg_config

If this fails lookup how to add pg_config to your path.

2. Next install Xcode Tools by running this command in terminal:

xcode-select --install

If you have both those sorted out now try to install psycopg2 again

πŸ‘€hahmed

10πŸ‘

I was also facing the same after running all the above commands, but the following two commands worked for me:

  1. Instead of pip, use this:
sudo apt-get install libpq-dev
  1. then run this command:
pip install psycopg2
πŸ‘€iihsan

6πŸ‘

On OS X, I was able to solve this by simply upgrading wheel before installing psycopg2:

pip install --upgrade wheel
πŸ‘€Elmer Medez

5πŸ‘

For OSX Sierra users, it seems that an xcode update is the solution: Can't install psycopg2 package through pip install… Is this because of Sierra?

πŸ‘€Adam Starrh

4πŸ‘

I tried all the above solutions but they did not work for me. What I did was change the psycopg2 version in my requirements.txt file from psycopg2==2.7.4 to psycopg2==2.7.6

πŸ‘€codezero11

1πŸ‘

Is your error message complete? the most encountered reason for failing to install psycopg2 on mac from pip is pg_config is not in path.
by the way, using macports or fink to install psycopg2 is more recommended way, so you don’t have to worry about pg_config, libpq-dev and python-dev.

plus, are using Python 3.5? then upgrage your wheel to > 0.25.0 using pip.

πŸ‘€Sniper_3B

1πŸ‘

I faced the same issue, but the answers above didn’t work for me.
So this is what I did in my requirements.txt
psycopg2-binary==2.7.6.1 and it worked fine

πŸ‘€Utsav Preet

1πŸ‘

I had this issue on several packages, including psycopg2, numpy, and pandas. I simply removed the version from the requirements.txt file, and it worked.

So instead of psycopg2-binary==2.7.6.1 I just had psycopg2-binary.

πŸ‘€keirasan

1πŸ‘

sudo apt install libpq-dev python3.X-dev 

where X is the sub version,

these should be followed by :

  pip install --upgrade wheel
  pip install --upgrade setuptools
  pip install psycopg2

Enjoy !!!

1πŸ‘

Fixed by installing python3.7-dev: sudo apt install python3.7-dev, based on the link.

  • Python: 3.7
  • Ubuntu: 20.04.3 LTS
πŸ‘€tarasinf

0πŸ‘

I know you are asking for development environment but if you are deploying on server say, Heroku. Just add below line in the requirements.txt of your project.

django-heroku==0.3.1

As this package itself will install the required packages like psycopg2 on server deployment.So let the server(heroku) should take care of it.

0πŸ‘

I solved my problem by updating/installing vs_BuildTools. The link to the software was given in the error itself.
Error Image

0πŸ‘

I though the LIBRARY_PATH would work but unfortunately it didn’t.

Using Homebrew on MacOS Silicon, the following workaround did the trick for me:

LDFLAGS=-L/opt/homebrew/opt/openssl/lib CPPFLAGS=-I/opt/homebrew/opt/openssl/include pip install -r requirements.txt # or pip install psycopg2-binary

πŸ‘€qro

0πŸ‘

On windows I’ve managed to solve this by adding C:\Program Files\PostgreSQL\15\lib to LIB env variable

πŸ‘€parean

Leave a comment