pg_config виконуваного файлу не знайдено


768

У мене виникають проблеми з установкою 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

Я спробував додати шлях до setup.cfgфайлу pg_config і створити його за допомогою вихідних файлів, завантажених з їх веб-сайту ( 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, ти справді працював для мене.
pratbha

Відповіді:


763

pg_configє в postgresql-devel( libpq-devу Debian / Ubuntu, libpq-develу Centos / Cygwin / Babun.)


66
Вирішено після установки libpq-devна ubuntu lucid (10.04). Наперед дякую.
піловер

22
pg_configof postgress.app знаходиться в /Applications/Postgres.app/Contents/Versions/<your version>/bin(Mac OS X)
Тім Даубеншютц

17
Це libpqxx-develна Fedora.
robsn

54
sudo apt-get install libpq-devпрацював на мене на Ubuntu
Білл Чітхем

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

384

На Mac OS X я вирішив це за допомогою диспетчера пакунків homebrew

brew install postgresql

29
Відмінно! Це вирішило проблему для мене, але новачки повинні знати, що вам потрібно спочатку встановити диспетчер пакунків Homebrew, щоб brewкоманда працювала.
морський

Працював і для мене, хоча я встановив заварку після встановлення pgadmin.
Ханал

8
Хіба це не встановлює всю базу даних?
zmbq

3
Мені потрібні додатковіbrew link postgresql
vincentlcy

1
Щоб додати коментар до @ seane, скористайтеся цим покроковим інструкцією для встановлення homebrew.
Брюс Уейн

235

Ви встановили python-dev? Якщо у вас вже є, спробуйте також встановитиlibpq-dev

sudo apt-get install libpq-dev python-dev

Зі статті: Як встановити psycopg2 під virtualenv


На своєму комп’ютері я встановлюю лише клієнт Postgresql. Отже, ви повинні встановити libpq-dev і python-dev.
bnPYSse

2
Сумнівно, що потрібен python-dev.
juanitogan

це
Арун

4
python3-dev потрібен. Без нього я дістаюсьPython.h: No such file or directory
крубо

1
ще одна залежність , необхідне для цьогоapt-get install -y gcc
Anum Sheraz

74

Також на 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
Бернардо Дуарте

45

На альпійської, бібліотека , яка містить 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 Workstation!
Марсело Газола


34

Ви повинні додати вимоги python, що використовуються в Postgres в Ubuntu. Виконати:

sudo apt-get install libpq-dev python-dev

32

Підводячи підсумок, я також зіткнувся з точно такою ж проблемою. Прочитавши багато публікацій про stackoverflow та інтернет-блоги, остаточне рішення, яке працювало для мене, це:

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

2) Файл pg_config (цей файл зазвичай знаходиться у папці бін інсталяційної папки PostgreSQL) PATH повинен був бути явно налаштований перед встановленням psycopg2. У моєму випадку встановлення PATH для PostgreSQL:

/opt/local/lib/postgresql91/

тож для того, щоб явно встановити PATH для файлу pg_config, я вписав у свій термінал наступну команду:

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

Ця команда гарантує, що, коли ви намагаєтеся встановити файл pip_config в pip, встановити файл psycopg2.

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


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

@andi Yea, шлях установки Postgres може відрізнятися, але рецепт установки для psycopg2, про який я згадував вище, залишається тим самим. Сподіваюся, це допомогло.
Алі Раза Бхаяні

30

sudo apt-get install libpq-dev працює для мене на Ubuntu 15.4


Якщо ви використовуєте новіший Ubuntu, все-таки використовуйте згадану інструкцію з установки. Дивіться pg_config
palik


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, [база] та [оновлення] розділи
ADD виключають = 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

Для тих, хто працює з ОС X, це рішення працювало для мене:

1) Встановіть Postgres.app:

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

2) Потім відкрийте термінал і запустіть цю команду, замінивши там, де написано {{version}}, номером версії Postgres:

експортувати PATH = $ PATH: /Applications/Postgres.app/Contents/Versions / {{версія}} / бін

напр

експортувати 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, вам потрібно скористатися правильним шляхом до каталогу поштових скринь. Ви впевнені, що /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 знаходиться в цій папці. Тому перед встановленням 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'
Праксеоліт

11

Перш ніж встановлювати psycopg2, потрібно оновити файл. Використовуйте цю команду

pip install --upgrade pip

Більш детальна відповідь може бути корисною у більшості випадків.
bkausbk

11

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


Це не спрацювало для мене. Тільки brew install postgresqlвиправили це.
tsando

Можливо, вам доведеться 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: Якщо Зміни не відображаються, вам може знадобитися перезапустити рядок Terminal / Command

Джерело




8

У MacOS найпростішим рішенням буде позначення правильного бінарного файлу, що знаходиться під пакетом Postgres.

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

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


Працює для мене, не довелося судо хоч. Дякую!
Джон Оттенліпс

Дійсно для мене працює!
Гадназар

5

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

pip встановити psycopg2 == 2.5.2


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термінал, над яким ви хочете продовжувати працювати.


Це працювало для мене на Макосі та zshоболонці!
Адітя Рао

4

Для користувачів Mac, розгорніть змінну шляху, щоб включити 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 після ..... / бін) та запустіть команду установки pip, вона буде працювати.

Однак якщо ви вирішите слідувати вказівці для запуску 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.