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


771

У меня проблемы с установкой 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.


8
Когда вы запускаете команды как sudo, $PATHизменяется. Можете ли вы проверить ваш $ PATH как root?
Уго Таварес

1
В моем случае я бегу ln -s /usr/pgsql-9.1/bin/pg_config /usr/sbin/pg_configи все в порядке!
CK.Nguyen

Спасибо @ CK.Nguyen ваш совет действительно работал для меня.
Пратибха

Ответы:


766

pg_configнаходится в postgresql-devel( libpq-devв Debian / Ubuntu, libpq-develв Centos / Cygwin / Babun.)


66
Решено после установки libpq-devна Ubuntu Lucid (10.04). Заранее спасибо.
пилавер

22
pg_configна postgress.app в /Applications/Postgres.app/Contents/Versions/<your version>/bin(Mac OS X)
Тим Даубеншютц

17
Это libpqxx-develна Fedora.
robsn

55
sudo apt-get install libpq-devработал для меня на Ubuntu
Билл Читам

48
на Alpine Linux: apk добавить postgresql-dev
RJ

385

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

brew install postgresql

29
Отлично! Это решило проблему для меня, но новички должны знать, что вам нужно сначала установить менеджер пакетов Homebrew, чтобы brewкоманда работала.
Сеан

У меня тоже сработало, хотя я установил brew после установки pgadmin.
Ханал

8
Разве это не устанавливает всю базу данных?
Zmbq

3
Мне нужно дополнительноеbrew link postgresql
Vincentlcy

1
Чтобы добавить комментарий @ seane, используйте это руководство для установки homebrew.
Брюс Уэйн

236

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

sudo apt-get install libpq-dev python-dev

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


На моем компьютере я устанавливаю только клиент Postgresql, так что вы должны установить libpq-dev и python-dev.
bnPYSse

2
Сомнительно, что нужен python-dev.
Хуанитоган

это помогло мне. Спасибо
Арун

4
нужен python3-dev. Без этого я получаюPython.h: No such file or directory
krubo

1
для этого требуется еще одна зависимостьapt-get install -y gcc
Anum Sheraz

75

Также на 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".


3
@GianlucaLodigiani вы также можете сделать это, если вы не хотите перезапускать консольPATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH" pip install psycopg2
Бернардо Дуарте

46

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

apk add postgresql-dev

38

Вот что у меня работает на 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

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


1
На Ubuntu это sudo apt-get install postgresql postgresql-dev python-dev, и это работало для меня.
модуль

2
также работает на Amazon Linux AMI с декабря 2016 года. Также убедитесь, что gccустановлен и python3-devel.
villasv

благодарю вас!!! Это работало и на рабочей станции Fedora 32!
Марсело Газзола


34

Вы должны добавить требования Python, используемые в Postgres на Ubuntu. Запустить:

sudo apt-get install libpq-dev python-dev

32

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

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.

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


6
для меня на OS X путь выглядел такPATH="/Applications/Postgres.app/Contents/Versions/9.3/bin:$PATH"
andilabs

@andi Да, путь установки Postgres может отличаться, но рецепт установки psycopg2, который я упоминал выше, остается прежним. Надеюсь, это помогло.
Али Раза Бхайани

30

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


Если вы используете более новую версию Ubuntu, все равно используйте вышеупомянутую инструкцию по установке. Смотрите pg_config
палик


21

Вы можете установить скомпилированные двоичные файлы на любую платформу с помощью 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 /) и добавьте его в PATH: $ export PATH=/usr/lib/postgresql/X.Y/bin/:$PATH вам нужен только pg_config для компиляции psycopg2, а не для его регулярного использования.

В Ubuntu мне нужно было сначала установить библиотеку libpq-dev, а затем просто снова запустить команду pip install:apt install libpq-dev
Бенджамин,

20

ОБНОВИТЬ /etc/yum.repos.d/CentOS-Base.repo, разделы [base] и [updates]
ADD exclude = 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

20

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

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

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

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

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

например

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


Или ссылку на последнюю версиюsudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/pg_config /usr/local/bin/pg_config
Субин Себастьян

17

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

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

-bash: cd: /usr/pgsql-x.x/bin/: No such file or directory
пиловер

@pylover, вам нужно использовать правильный путь к вашему каталогу Postgres bin. Вы уверены, что /usr/pgsql-x.x/bin/это правильно?
Марбони

Также было бы достаточно просто добавить папку, в которой находятся все важные pg_файлы. Для postgres.app этот путь в Mac OS X есть /Applications/Postgres.app/Contents/Versions/9.3/bin. PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin Пожалуйста, обновите вашу версию *, если выпущена новая версия!
Тим Даубеншютц

Это сработало для меня на OS X El Capitan:PATH=$PATH:/usr/local/Cellar/postgresql/9.5.0/bin/
Дэвид Харири

16

Решение Али сработало для меня, но у меня были проблемы с поиском местоположения папки для мусора. Быстрый способ найти путь в 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.


1
Более новые документы используют следующий путь:/Applications/Postgres.app/Contents/Versions/9.3/bin
jpimentel

Это, кажется, движется. find /usr/local -name 'pg_config'
Praxeolitic

11

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

pip install --upgrade pip

Более подробный ответ может быть полезен в большинстве случаев.
bkausbk

11

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


Это не сработало для меня. Только brew install postgresqlисправил это.
Цандо

Возможно, вам придется pip install psycopg2-binaryдля меня: pip -> python2, pip3 -> python3. Но пока вы работаете, это было одним из многих решений!
DuDoff

9

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

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

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


9

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

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

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

и делать

pip install psycopg2

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

Источник




8

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

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

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


Работает для меня, не нужно, хотя sudo. Спасибо!
Джон Оттенлипс

Действительно работает для меня!
Хадназзар


5

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

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

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

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


4

Для тех, кто в MacOS Catalina использует zshоболочку, которая также установила приложение postgres :

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

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

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

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


Это работало для меня на Macos и zshshell!
Адитья Рао

4

Для пользователей Mac расширьте вашу переменную path, чтобы включить PostgreSQL, как это export PATH=$PATH:/Library/PostgreSQL/12/bin.


3

Вот так мне удалось установить psycopg2

$ wget http://initd.org/psycopg/tarballs/PSYCOPG-2-5/psycopg2-2.5.3.tar.gz
$ tar -xzf psycopg2-2.5.3.tar.gz
$ cd psycopg2-2.5.3
$ pip install .

2

Я уверен, что вы столкнулись с той же «проблемой», что и я, поэтому я предложу вам чрезвычайно простое решение ...

В вашем случае фактический путь, который вам нужно добавить в $ PATH (или в качестве параметра команды):

/usr/pgsql-9.1/bin/pg_config

не

/usr/pgsql-9.1/bin

Например, если вы запустите скрипт python setup.py впоследствии, вы запустите его так:

python setup.py build_ext --pg-config /usr/pgsql-9.1/bin/pg_config build

Возможно, слишком поздно, но все же самое простое решение.

ПОСЛЕДНЕЕ РЕДАКТИРОВАНИЕ:

При дальнейшем тестировании я обнаружил, что если вы изначально добавите путь к pg_config в форме

/usr/pgsql-9.1/bin

(без / pg_config после ..... / bin) и выполните команду pip install, это сработает.

Однако если вы затем решите следовать указаниям для запуска python setup.py, вам нужно будет указать путь с помощью / pg_config после ..... / bin, т.е.

python setup.py build_ext --pg-config /usr/pgsql-9.1/bin/pg_config build

Альтернативой добавлению каталога pgsql / bin в PATH, который я использовал справедливым образом, является символическая ссылка /usr/pgsql-9.6/bin/pg_config(или как она называется в вашей системе), чтобы /usr/bin/pg_config- таким образом, она была доступна в PATH, которую вы уже получили.
Ральф Болтон

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.