Исполняемый файл 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
Это должно решить проблему.
Это работает для меня:
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 и использует zsh
shell, который также установил приложение 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
без проблем.