Reputation: 2373
I cannot figure this out for the life of me.
When I pip install django-tenant-schemas
it tries to install the dependency psycopg2
which requires the Python headers and gcc. I have all this installed and still keep getting this error!
./psycopg/psycopg.h:35:10: fatal error: libpq-fe.h: No such file or directory
So to install libpq-fe-h
I need to sudo apt-get install libpq-dev
..
..which returns..
libpq-dev is already the newest version (10.10-0ubuntu0.18.04.1).
Then when I sudo find / libpq-fe.h
it doesn't seem to be in my OS.
I am lost at this point. If anyone can help I would highly appreciate it.
Upvotes: 71
Views: 47127
Reputation: 2092
It was enough for me to install
`sudo apt install libpq-dev`
on my ubuntu 22.04.x.
Upvotes: 0
Reputation: 321
For me, I realized it was trying to use the deprecated setup.py so I installed wheel (pip install wheel
) and that sorted it all out.
Upvotes: 4
Reputation: 31
You need to create a LD_LIBRARY_PATH
that indicates the path of your library /user/pgsql-11/lib
Source: The 3rd point of build prerequisites at https://www.psycopg.org/docs/install.html#build-prerequisites
Upvotes: 2
Reputation: 1920
Well after installing these libraries
sudo dnf install python-virtualenv openssl-devel gcc libffi-devel libxslt-devel
issue was not gone.
I used mlocate
to find where libpq-fe.h
file is located. On my system (Fedora 32) it was located at /usr/pgsql-10/include/libpq-fe.h
yum install mlocate
sudo updateb
locate libpq-fe.h
After all added this line to ~/.bash_profile
nano ~/.bash_profile
export PATH=/usr/pgsql-10/bin/:$PATH
Works fine, I can easily install psycopg2
without any trouble.
Upvotes: 2
Reputation: 42017
For some reason, the file is missing on the system.
As you're using apt-get
, the system is dpkg
based, presumably Debian or it's derivative. You can try the Ubuntu's package search to get which package contains a file with name ending in libpq-fe.h
.
I found the package is libpq-dev
and file's absolute path is /usr/include/postgresql/libpq-fe.h
.
FWIW, on a dpkg
based system, you can check which package gives a file if you know the file's absolute path:
% dpkg -S /usr/include/postgresql/libpq-fe.h
libpq-dev: /usr/include/postgresql/libpq-fe.h
Also, unlike find
, locate
keeps a cache of found files (mlocate.db
) that is created everyday via cron
; so if the file happens to be removed after the last run, you can run locate libfq-fe.h
to get the absolute path to the file without needing to check the Ubuntu package search online.
So the package is libpq-dev
. Now, reinstalling it will get everything to the default state i.e. all relevant files will be copied to the right places. As it is only a library package, no user/system level configurations will be overridden (and dpkg
will prompt you for action for any package that does that).
To reinstall the package:
sudo apt-get install --reinstall libpq-dev
Upvotes: 110