Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot install psycopg2 Ubuntu

Tags:

Trying to get a server ready for a django project and I'm running into some issues with setup for postgres.

I'm following this guide: https://jee-appy.blogspot.com/2017/01/deply-django-with-nginx.html

And I'm at step 5:

  1. Now, we need to configure postgreSQL so that it can communicate with our Django application. For this, install psycopg2 database adapter. But this adapter have some package dependencies, so first install them.

run:

(django_env) $ sudo apt-get install libpq-dev python3-dev

then...

(django_env) $ pip install psycopg2

I do that, and this point in the instructions, I get a "compilation failed" error.

I tried the solutions suggested in this stack exchange question: Trouble with psycopg2 in virtualenv python3 for use with Django and this one: Cannot install psycopg2 on virtualenv

I am very much a linux and django noob, so if this is a duplicate issue, please have mercy on me and leave a comment explaining why you are marking it as a duplicate as you do so.

Thanks for your time!

Here's the output and install command that caused it:

(django_env1) user:/home/projects/sample_project$ sudo pip install psycopg2 Downloading/unpacking psycopg2   Downloading psycopg2-2.7.3.2.tar.gz (425kB): 425kB downloaded   Running setup.py (path:/tmp/pip_build_root/psycopg2/setup.py) egg_info for package psycopg2  Installing collected packages: psycopg2   Running setup.py install for psycopg2     building 'psycopg2._psycopg' extension     x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.7.3.2 (dt dec pq3 ext lo64)" -DPG_VERSION_NUM=90320 -DHAVE_LO64=1 -I/usr/include/python2.7 -I. -I/usr/include/postgresql -I/usr/include/postgresql/9.3/server -c psycopg/psycopgmodule.c -o build/temp.linux-x86_64-2.7/psycopg/psycopgmodule.o -Wdeclaration-after-statement     In file included from psycopg/psycopgmodule.c:27:0:     ./psycopg/psycopg.h:34:20: fatal error: Python.h: No such file or directory      #include <Python.h>                         ^     compilation terminated.     error: command 'x86_64-linux-gnu-gcc' failed with exit status 1     Complete output from command /usr/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip_build_root/psycopg2/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-_0zc1L-record/install-record.txt --single-version-externally-managed --compile:     running install  running build  running build_py  creating build  creating build/lib.linux-x86_64-2.7  creating build/lib.linux-x86_64-2.7/psycopg2  copying lib/_ipaddress.py -> build/lib.linux-x86_64-2.7/psycopg2  copying lib/tz.py -> build/lib.linux-x86_64-2.7/psycopg2  copying lib/_json.py -> build/lib.linux-x86_64-2.7/psycopg2  copying lib/__init__.py -> build/lib.linux-x86_64-2.7/psycopg2  copying lib/errorcodes.py -> build/lib.linux-x86_64-2.7/psycopg2  copying lib/psycopg1.py -> build/lib.linux-x86_64-2.7/psycopg2  copying lib/_range.py -> build/lib.linux-x86_64-2.7/psycopg2  copying lib/extensions.py -> build/lib.linux-x86_64-2.7/psycopg2  copying lib/sql.py -> build/lib.linux-x86_64-2.7/psycopg2  copying lib/pool.py -> build/lib.linux-x86_64-2.7/psycopg2  copying lib/extras.py -> build/lib.linux-x86_64-2.7/psycopg2  creating build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/test_bug_gc.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/test_psycopg2_dbapi20.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/test_types_extras.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/test_async_keyword.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/test_sql.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/test_ipaddress.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/dbapi20.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/test_fast_executemany.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/__init__.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/test_copy.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/test_with.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/test_connection.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/test_module.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/test_replication.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/test_extras_dictcursor.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/test_dates.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/test_bugX000.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/testconfig.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/test_errcodes.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/test_transaction.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/test_async.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/testutils.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/test_cursor.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/test_quote.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/dbapi20_tpc.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/test_notify.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/test_lobject.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/test_cancel.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/test_green.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  copying tests/test_types_basic.py -> build/lib.linux-x86_64-2.7/psycopg2/tests  running build_ext  building 'psycopg2._psycopg' extension  creating build/temp.linux-x86_64-2.7  creating build/temp.linux-x86_64-2.7/psycopg  x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.7.3.2 (dt dec pq3 ext lo64)" -DPG_VERSION_NUM=90320 -DHAVE_LO64=1 -I/usr/include/python2.7 -I. -I/usr/include/postgresql -I/usr/include/postgresql/9.3/server -c psycopg/psycopgmodule.c -o build/temp.linux-x86_64-2.7/psycopg/psycopgmodule.o -Wdeclaration-after-statement  In file included from psycopg/psycopgmodule.c:27:0:  ./psycopg/psycopg.h:34:20: fatal error: Python.h: No such file or directory   #include <Python.h>                      ^  compilation terminated.  error: command 'x86_64-linux-gnu-gcc' failed with exit status 1  ---------------------------------------- Cleaning up... Command /usr/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip_build_root/psycopg2/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-_0zc1L-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /tmp/pip_build_root/psycopg2 
like image 521
unpaid-intern Avatar asked Nov 15 '17 22:11

unpaid-intern


People also ask

Does psycopg2 work with Python 3?

The current psycopg2 implementation supports: Python 2 versions from 2.6 to 2.7. Python 3 versions from 3.2 to 3.6. PostgreSQL server versions from 7.4 to 9.6.

What is psycopg2 module in Python?

Psycopg is the most popular PostgreSQL database adapter for the Python programming language. Its main features are the complete implementation of the Python DB API 2.0 specification and the thread safety (several threads can share the same connection).


1 Answers

You've installed the python-dev libraries for Python 3. Your psycopg2 install is using python 2.7

Make sure you've installed python3-pip

sudo apt-get install python3-pip 

Then:

pip3 install psycopg2 

If that still fails, try installing the development headers for postgresql:

sudo apt install python3-dev libpq-dev pip3 install psycopg2 

If on Python 2

sudo apt update sudo apt-get install postgresql postgresql-contrib sudo apt-get install libpq-dev sudo apt-get install python-dev sudo apt-get install python-pip pip2 install psycopg2-binary 

If on Ubuntu 20.04

sudo apt-get install build-essential 

Then run the other steps for either Python 2 or 3.

like image 56
alexisdevarennes Avatar answered Dec 05 '22 19:12

alexisdevarennes