#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
.
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. Только если он вернет неожиданный номер версии, чего не было в моем случае.