Исполняемый файл 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.

user1448207
источник
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.)

TilmanBaumann
источник
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

thegauraw
источник
На моем компьютере я устанавливаю только клиент 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".

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

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

apk add postgresql-dev
rkoval
источник
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

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

radtek
источник
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

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

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

mthecreator
источник
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
Mayank
источник
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

Milo
источник
Или ссылку на последнюю версию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
Marboni
источник
-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.

user2498172
источник
1
Более новые документы используют следующий путь:/Applications/Postgres.app/Contents/Versions/9.3/bin
jpimentel
Это, кажется, движется. find /usr/local -name 'pg_config'
Praxeolitic
11

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

pip install --upgrade pip
Aswin
источник
Более подробный ответ может быть полезен в большинстве случаев.
bkausbk
11

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

DuDoff
источник
Это не сработало для меня. Только 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: если изменения не отражаются, вам может потребоваться перезапустить терминал / командную строку

Источник

Динеш Санни
источник
9

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

pacman -S python-psycopg2
Ронан Буато
источник
А как насчет Windows?
Prathamesh Больше
2
@PrathameshMore я не знаю, я не использую Windows. Вы пробовали этот ответ: stackoverflow.com/a/25767749/5660517 ?
Ронан Бойто
8

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

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

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

Субин Себастьян
источник
Работает для меня, не нужно, хотя sudo. Спасибо!
Джон Оттенлипс
Действительно работает для меня!
Хадназзар
5

sudo yum установить postgresql-devel (centos6X)

pip install psycopg2 == 2.5.2

user2387567
источник
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без проблем.

Gabi
источник
4

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

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

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

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

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

qarthandso
источник
Это работало для меня на 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 .
TomNg
источник
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
BogdanSorlea
источник
Альтернативой добавлению каталога pgsql / bin в PATH, который я использовал справедливым образом, является символическая ссылка /usr/pgsql-9.6/bin/pg_config(или как она называется в вашей системе), чтобы /usr/bin/pg_config- таким образом, она была доступна в PATH, которую вы уже получили.
Ральф Болтон
2

для CentOS / RedHat убедитесь, что /etc/alternatives/pgsql-pg_configэто неразрывная символическая ссылка

Хедде ван дер Хайде
источник