Как установить libpq-fe.h?

#postgresql #docker #psycopg2

Вопрос:

Я не могу понять этого ни за что на свете.

Когда я pip install django-tenant-schemas пытаюсь установить зависимость psycopg2 , для которой требуются заголовки Python и gcc. У меня все это установлено, и я все еще продолжаю получать эту ошибку!

 ./psycopg/psycopg.h:35:10: fatal error: libpq-fe.h: No such file or directory
 

Поэтому для установки libpq-fe-h мне нужно sudo apt-get install libpq-dev ..

..который возвращается..

libpq-dev is already the newest version (10.10-0ubuntu0.18.04.1).

Затем, когда я sudo find / libpq-fe.h , кажется, этого нет в моей операционной системе.

В этот момент я теряюсь. Если кто-нибудь может помочь, я был бы очень признателен.

Комментарии:

1. Попробуйте выполнить переустановку: sudo apt-get install --reinstall libpq-dev

2. О господи! Я перепробовал все, и ничего не сработало! Я переустановил все, кроме этого! Так неприятно! Спасибо!

3. У меня была та же проблема в Ubuntu 20.04, и эта простая команда спасла мне жизнь.

Ответ №1:

По какой-то причине файл отсутствует в системе.

Как вы используете apt-get , система dpkg основана, предположительно, на Debian или является производной. Вы можете попробовать поиск пакетов Ubuntu, чтобы узнать, какой пакет содержит файл с именем, заканчивающимся на libpq-fe.h .

Я обнаружил, что пакет есть libpq-dev , а абсолютный путь к файлу есть /usr/include/postgresql/libpq-fe.h .


FWIW, dpkg в системе на базе вы можете проверить, какой пакет предоставляет файл, если вы знаете абсолютный путь к файлу:

 % dpkg -S /usr/include/postgresql/libpq-fe.h
libpq-dev: /usr/include/postgresql/libpq-fe.h
 

Также, в отличие find от , locate сохраняет кэш найденных файлов ( mlocate.db ), который создается каждый день через cron ; поэтому, если файл будет удален после последнего запуска, вы можете запустить locate libfq-fe.h , чтобы получить абсолютный путь к файлу, не проверяя поиск пакетов Ubuntu в Интернете.


Итак, посылка есть libpq-dev . Теперь, переустановив его, вы получите все в состояние по умолчанию, т. е. все соответствующие файлы будут скопированы в нужные места. Поскольку это всего лишь библиотечный пакет, никакие конфигурации на уровне пользователя/системы не будут переопределены (и dpkg будут запрашивать у вас действия для любого пакета, который это делает).

Чтобы переустановить пакет:

 sudo apt-get install --reinstall libpq-dev
 

Комментарии:

1. Ага. Повторная установка sudo apt-get install --reinstall libpq-dev тоже привела меня к той же проблеме! Спасибо!

Ответ №2:

Хорошо, что после установки этих библиотек sudo dnf install python-virtualenv openssl-devel gcc libffi-devel libxslt-devel проблема не исчезла.

Я привык mlocate находить, где libpq-fe.h находится файл. В моей системе (Fedora 32) он был расположен по адресу /usr/pgsql-10/include/libpq-fe.h

 yum install mlocate
sudo updateb
locate libpq-fe.h
 

В конце концов, добавил эту строку в ~/.bash_profile

 nano ~/.bash_profile
export PATH=/usr/pgsql-10/bin/:$PATH
 

Работает нормально, я могу легко установить psycopg2 без каких-либо проблем.

Ответ №3:

вам нужно создать LD_LIBRARY_PATH, где указан путь к вашей библиотеке «/user/pgsql-11/lib».

Третий пункт предварительных условий построения http://initd.org/psycopg/docs/install.html

Комментарии:

1. Только если он вернет неожиданный номер версии, чего не было в моем случае.