"Failed building wheel for psycopg2" - MacOSX using virtualenv and pip
PythonDjangoPostgresqlVirtualenvPsycopg2Python Problem Overview
I'm attempting to make a website with a few others for the first time, and have run into a weird error when trying to use Django/Python/VirtualEnv. I've found solutions to this problem for other operating systems, such as Ubuntu, but can't find any good solutions for Mac.
This is the relevant code being run:
virtualenv -p python3 venv
source venv/bin/activate
pip install -r requirements.txt
After running that block, I get the following errors:
> AssertionError
> ---------------------------------------- > Failed building wheel for django-toolbelt > Running setup.py bdist_wheel for psycopg2
...
> AssertionError
> ---------------------------------------- > Failed building wheel for psycopg2 > Failed to build django-toolbelt psycopg2
I believe I've installed the "django-toolbelt" and "psycopg2", so I'm not sure why it would be failing.
The only difference I can think of is that I did not use the command
sudo apt-get install libpq-dev
as was instructed for Ubuntu usage as I believe that installing postgresql with brew took care of the header.
Thanks for any help or insight!
Python Solutions
Solution 1 - Python
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
hope this helps...
Solution 2 - Python
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
Solution 3 - Python
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
Solution 4 - Python
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 /
Solution 5 - Python
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 thelibpq
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.
Solution 6 - Python
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
Solution 7 - Python
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
Solution 8 - Python
On OS X, I was able to solve this by simply upgrading wheel before installing psycopg2:
pip install --upgrade wheel
Solution 9 - Python
For OSX Sierra users, it seems that an xcode update is the solution: https://stackoverflow.com/questions/39767810/cant-install-psycopg2-package-through-pip-install-is-this-because-of-sierra
Solution 10 - Python
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
Solution 11 - Python
I was also facing the same after running all the above commands, but the following two commands worked for me:
- Instead of pip, use this:
sudo apt-get install libpq-dev
- then run this command:
pip install psycopg2
Solution 12 - Python
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.
Solution 13 - Python
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
Solution 14 - Python
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.
Solution 15 - Python
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.
Solution 16 - Python
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 !!!
Solution 17 - Python
I solved my problem by updating/installing vs_BuildTools. The link to the software was given in the error itself. Error Image
Solution 18 - Python
Fixed by installing python3.7-dev
: sudo apt install python3.7-dev
, based on the link.
-
Python: 3.7
-
Ubuntu: 20.04.3 LTS