Исполняемый файл pg_config не найден

У меня проблемы с установкой psycopg2. Я получаю следующую ошибку при попытке pip install psycopg2:

Error: pg_config executable not found.

Please add the directory containing pg_config to the PATH

or specify the full executable path with the option:



    python setup.py build_ext --pg-config /path/to/pg_config build ...



or with the pg_config option in 'setup.cfg'.

----------------------------------------
Command python setup.py egg_info failed with error code 1 in /tmp/pip-build/psycopg2

Но проблема в том, pg_config на самом деле в моем PATH; работает без проблем:

$ which pg_config
/usr/pgsql-9.1/bin/pg_config

Я попытался добавить путь pg_config к setup.cfg и создайте его, используя исходные файлы, которые я скачал с их сайта ( http://initd.org/psycopg/), и я получаю следующее сообщение об ошибке!

Error: Unable to find 'pg_config' file in '/usr/pgsql-9.1/bin/'

Но это на самом деле ТАМ!!!

Я озадачен этими ошибками. Может кто-нибудь помочь, пожалуйста?

Кстати, я sudo все команды. Также я на RHEL 5.5.

59 ответов

pg_config в postgresql-devel (libpq-dev в Debian/Ubuntu, libpq-devel на Cygwin/Babun.)

В Mac OS X я решил это с помощью менеджера пакетов homebrew

brew install postgresql

Вы установили Python-Dev? Если у вас уже есть, попробуйте также установить libpq-dev

sudo apt-get install libpq-dev python-dev

Из статьи: Как установить psycopg2 под virtualenv

Также на OSX. Установил Postgress.app с http://postgresapp.com/ но имел ту же проблему.

я нашел pg_config в содержании этого приложения и добавил каталог к $PATH,

Это было в /Applications/Postgres.app/Contents/Versions/latest/bin, Так что это сработало: export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH",

Вы можете установить предварительно скомпилированные двоичные файлы на любую платформу с pip или conda:

python -m pip install psycopg2-binary

или

conda install psycopg2

Обратите внимание, что страница psycopg2-binary pypi рекомендует создавать из исходного кода в производстве:

Бинарный пакет - это практичный выбор для разработки и тестирования, но в производстве рекомендуется использовать пакет, созданный из исходных кодов.

Чтобы использовать пакет, созданный из исходных кодов, используйте python -m pip install psycopg2. Для этого процесса потребуется несколько зависимостей ( документация) (выделено мной):

  • Компилятор переменного тока.
  • В заголовочных файлах Python. Обычно они устанавливаются в таком пакете, как python-dev. Сообщение об ошибке, например: Python.h: Отсутствие такого файла или каталога, указывает на отсутствие заголовков Python.
  • В заголовочных файлах libpq. Обычно они устанавливаются в таком пакете, как libpq-dev. Если вы получаете сообщение об ошибке: libpq-fe.h: Нет такого файла или каталога, которые вам не хватает.
  • Программа pg_config: обычно она устанавливается пакетом libpq-dev, но иногда не находится в каталоге PATH. Наличие его в PATH значительно упрощает установку, поэтому попробуйте запустить pg_config --version: если он возвращает ошибку или неожиданный номер версии, найдите каталог, содержащий pg_config, поставляемый с правильной версией libpq (обычно /usr/lib/postgresql/XY/bin/) и добавьте его в ПУТЬ: $ export PATH=/usr/lib/postgresql/X.Y/bin/:$PATH Вам нужен pg_config только для компиляции psycopg2, а не для его обычного использования.

Для пользователей Ubuntu это решение:

      sudo apt install libpq-dev

У меня это сработало.

На альпийском, библиотека, содержащая pg_config является postgresql-dev, Чтобы установить, запустите:

apk add postgresql-dev

Вот что у меня сработало на CentOS, сначала установи:

sudo yum install postgresql postgresql-devel python-devel

В Ubuntu просто используйте эквивалентные пакеты apt-get.

sudo apt-get install postgresql postgresql-dev python-dev

А теперь включите путь к вашему бинарному каталогу postgresql при установке pip, это должно работать для Linux на основе Debain или RHEL:

sudo PATH=$PATH:/usr/pgsql-9.3/bin/ pip install psycopg2

Убедитесь, что вы указали правильный путь. Это все:)

Вам необходимо установить libpq-dev / postgresql-libs, который представляет собой файлы заголовков и статическую библиотеку для компиляции программ на C, чтобы связываться с библиотекой libpq для связи с серверной частью базы данных PostgreSQL.

В Arch это будет работать:

      $ sudo pacman -S postgresql-libs

В Debian и Ubuntu:

      $ sudo apt-get install libpq-dev

В Mac OS X:

      $ brew install postgresql

В Red Hat / CentOS / Fedora:

      $ sudo yum install postgresql-devel

У меня была эта проблема, потому что у меня не было установки postgres. Если у вас есть brew install run

      brew install postgresql

Это должно решить проблему.

apt-get build-dep python-psycopg2

Это работает для меня:

sudo apt-get install libpq-dev python-dev

Подводя итог, я тоже столкнулся с точно такой же проблемой. После прочтения большого количества сообщений и онлайн-блогов, окончательное решение, которое сработало для меня, таково:

1) PostgreSQL (разработка или любая стабильная версия) должен быть установлен перед установкой psycopg2.

2) Файл pg_config (этот файл обычно находится в папке bin установочной папки PostgreSQL) Перед установкой psycopg2 необходимо было явно настроить PATH. В моем случае установка PATH для PostgreSQL:

/opt/local/lib/postgresql91/

поэтому, чтобы явно установить PATH файла pg_config, я ввел следующую команду в моем терминале:

PATH=$PATH:/opt/local/lib/postgresql91/bin/

Эта команда гарантирует, что когда вы попытаетесь установить psycopg2 с помощью pip, в этот раз он автоматически найдет путь PATH для pg_config.

Я также разместил полную ошибку с trace и ее решением в моем блоге, на которую вы можете сослаться. Это для Mac OS X, но проблема PATH pg_config является общей и применима также и к Linux.

sudo apt-get install libpq-dev у меня работает на Ubuntu 15.4

В Linux Mint sudo apt-get install libpq-dev работал на меня.

Просто запустите следующее:

      sudo apt install libpq-dev

Исправлена ​​проблема для меня

Для тех, кто работает под управлением OS X, это решение работает для меня:

1) Установите Postgres.app:

http://www.postgresql.org/download/macosx/

2) Затем откройте Терминал и выполните эту команду, заменив там, где написано {{version}}, номером версии Postgres:

экспорт PATH=$PATH:/Applications/Postgres.app/Contents/Versions/{{version}}/bin

например

экспорт PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin

ОБНОВЛЕНИЕ /etc/yum.repos.d/CentOS-Base.repo, [base] и [updates] разделы
ДОБАВИТЬ исключить =postgresql*

curl -O http://yum.postgresql.org/9.1/redhat/rhel-6-i386/pgdg-centos91-9.1-4.noarch.rpmr  
rpm -ivh pgdg-centos91-9.1-4.noarch.rpm

yum install postgresql  
yum install postgresql-devel

PATH=$PATH:/usr/pgsql-9.1/bin/

pip install psycopg2

Попробуйте добавить его в PATH:

PATH=$PATH:/usr/pgsql-9.1/bin/ ./pip install psycopg2

Решение Али сработало для меня, но у меня были проблемы с поиском местоположения папки для мусора Быстрый способ найти путь в Mac OS X - открыть psql (в верхней строке меню есть быстрая ссылка). Это откроет отдельное окно терминала и во второй строке путь вашей установки Postgres будет выглядеть так:

My-MacBook-Pro:~ Me$ /Applications/Postgres93.app/Contents/MacOS/bin/psql ; exit;

Ваш файл pg_config находится в этой папке bin. Поэтому перед установкой psycopg2 установите путь к файлу pg_config:

PATH=$PATH:/Applications/Postgres93.app/Contents/MacOS/bin/

или для более новой версии:

PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin

Затем установите psycopg2.

Я собираюсь оставить это здесь для следующей несчастной души, которая не может обойти эту проблему, несмотря на все предоставленные решения. Просто используйтеsudo pip3 install psycopg2-binary

Вам необходимо обновить свой пип перед установкой psycopg2. Используйте эту команду

pip install --upgrade pip

В MacOS самым простым решением будет символическая ссылка на правильный двоичный файл, который находится в пакете Postgres.

sudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/pg_config /usr/local/bin/pg_config

Это довольно безвредно, и при необходимости все приложения смогут использовать его в масштабах всей системы.

В Mac OS X и если вы используете приложение Postgres ( http://postgresapp.com/):

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin

Нет необходимости указывать версию Postgres в этой команде. Это всегда будет указывать на последние.

и делать

pip install psycopg2

PS: если изменения не отражаются, вам может потребоваться перезапустить терминал / командную строку

Источник

Установка python-psycopg2 решил это для меня на Arch Linux:

pacman -S python-psycopg2

Тем, кто пользуется macOS Catalina и использует zshshell, который также установил приложение postgres:

Откройте свой ~/.zshrcфайл и добавьте следующую строку:

export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"

Затем закройте все свои терминалы, снова откройте их, и вы решите свою проблему.

Если вы не хотите закрывать терминалы, просто введите source ~/.zshrc в любом терминале, над которым вы хотите продолжить работу.

Только что решил проблему в Cent OS 7:

export PATH=$PATH:/usr/pgsql-9.5/bin

убедитесь, что ваша версия PostgreSql соответствует правильной версии выше.

В Windows вы можете установить порт Psycopg для Windows, что рекомендуется в документации psycopg.

Это было частично предложено ранее, добавив здесь для ясности.

Из документации на https://www.psycopg.org/docs/install.html.
они предлагают запустить: $ pip install psycopg2-binary

Это решило проблему для меня.

Здесь, для полноты OS X: если вы установите PostgreSQL из MacPorts, pg_config будет в /opt/local/lib/postgresql94/bin/pg_config,

Когда вы установили MacPorts, он уже добавил /opt/local/bin в ваш путь.

Итак, это решит проблему: $ sudo ln -s /opt/local/lib/postgresql94/bin/pg_config /opt/local/bin/pg_config

Сейчас pip install psycopg2 сможет бежать pg_config без проблем.

Другие вопросы по тегам