Ответ 1
pg_config
находится в postgresql-devel
(libpq-dev
в Debian/Ubuntu, libpq-devel
на Cygwin/Babun.)
У меня возникли проблемы с установкой 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.
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
в этом приложении и добавил dir в $PATH
.
Это было в /Applications/Postgres.app/Contents/Versions/latest/bin
. Итак, это сработало: export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"
.
В альпийском языке библиотека, содержащая pg_config
, postgresql-dev
. Чтобы установить, запустите:
apk add postgresql-dev
apt-get build-dep python-psycopg2
Вы должны добавить требования Python, используемые в Postgres на Ubuntu. Бежать:
sudo apt-get install libpq-dev python-dev
sudo apt-get install libpq-dev
работает для меня на Ubuntu 15.4
Подводя итог, я столкнулся с такой же проблемой. После прочтения большого количества сообщений stackoverflow и онлайн-блогов окончательное решение, которое сработало для меня, следующее:
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 на этот раз PATH автоматически найдет pg_config.
Я также опубликовал полную ошибку с трассировкой и ее решением на blog, которую вы можете захотеть сослаться. Его для Mac OS X, но проблема PATH pg_config является общей и применима к Linux.
Это то, что сработало для меня в CentOS, сначала установите:
sudo yum install postgresql postgresql-devel python-devel
На Ubuntu просто используйте equivident 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
Обязательно укажите правильный путь. Thats all:)
В Linux Mint sudo apt-get install libpq-dev
работал для меня.
UPDATE/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
Для тех, кто работает с ОС X, это решение сработало для меня:
1) Установите Postgres.app:
http://www.postgresql.org/download/macosx/
2) Затем откройте терминал и запустите эту команду, заменив там, где он говорит {{version}}, с номером версии Postgres:
export PATH = $PATH:/Applications/Postgres.app/Contents/Versions/{{version}}/bin
например.
export PATH = $PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin
Попробуйте добавить его в PATH:
PATH=$PATH:/usr/pgsql-9.1/bin/ ./pip install psycopg2
Решение Ali работало для меня, но мне не удалось найти папку с папкой bin. Быстрый способ найти путь в 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.
Вам необходимо обновить свой пипс до установки psycopg2. Используйте эту команду
pip install --upgrade pip
Просто решил проблему в Cent OS 7:
export PATH=$PATH:/usr/pgsql-9.5/bin
убедитесь, что ваша версия PostgreSql соответствует правильной версии выше.
В Windows, Вы можете установить порт Windows Psycopg, который рекомендуется в psycopg документация.
В Mac OS X и если вы используете приложение Postgres (http://postgresapp.com/):
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
Нет необходимости указывать версию Postgres в этой команде. Это всегда будет указывать на последние.
и делать
pip install psycopg2
PS: если изменения не отражаются, вам может потребоваться перезапустить терминал/командную строку
sudo yum install postgresql-devel (centos6X)
pip install psycopg2 == 2.5.2
Здесь для полноты 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
без проблем.
В MacOS простейшая попытка - создать символическую ссылку на правильный двоичный файл, который находится внутри пакета Postgres.
sudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/pg_config /usr/local/bin/pg_config
Это довольно безопасно, и все приложения смогут использовать его в масштабе всей системы, если потребуется.
Я собираюсь оставить это здесь для следующей несчастной души, которая не может обойти эту проблему, несмотря на все предоставленные решения. Просто используйте sudo pip3 install psycopg2-binary
Установка python-psycopg2
решила это для меня на Arch Linux:
pacman -S python-psycopg2
для CentOS/RedHat убедитесь, что /etc/alternatives/pgsql-pg_config
является неизолированной символической ссылкой
Я уверен, что вы испытали ту же "проблему", что и я, поэтому я предлагаю вам очень простое решение...
В вашем случае фактический путь, который нужно добавить в $PATH (или в качестве параметра команды), следующий:
/usr/pgsql-9.1/bin/pg_config
не
/usr/pgsql-9.1/bin
например. если вы запустите python setup.py script после этого, вы будете запускать его следующим образом:
python setup.py build_ext --pg-config /usr/pgsql-9.1/bin/pg_config build
Возможно, слишком поздно, но все же самое простое решение.
LATER EDIT:
В рамках дальнейшего теста я выяснил, что если вы сначала добавили путь к pg_config в форме
/usr/pgsql-9.1/bin
(без/pg_config после..... /bin ) и запустите команду установки пакета, она будет работать.
Однако, если вы затем решите следовать указаниям для запуска python setup.py, вам нужно будет указать путь с /pg _config после...../bin, т.е.
python setup.py build_ext --pg-config /usr/pgsql-9.1/bin/pg_config build
Вот так мне удалось установить 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 .
В Gentoo Вы должны выполнить следующие
# Install postgresql client libraries
sudo emerge postgresql-base
Для тех, кто сталкивался с этой проблемой, работая над приложением Django и развертывая его в AWS, метод, описанный в этом руководстве, работал для меня: https://realpython.com/deploying-a-django-app-and-postgresql-to-aws-elastic-beanstalk/
Вот объяснение автора, когда вы получаете следующую ошибку:
Error: pg_config executable not found.
Проблема в том, что мы попытались установить psycopy2 (привязки Postgres Python), но нам также необходимо установить клиентские драйверы Postgres. Так как они не установлены по умолчанию, мы должны установить их в первую очередь.
eb будет читать пользовательские файлы .config из папки с именем ".ebextensions" на корневом уровне вашего проекта. Эти файлы .config позволяют вам устанавливать пакеты, запускать произвольные команды и/или устанавливать переменные окружения. Файлы в каталоге ".ebextensions" должны соответствовать синтаксису JSON или YAML и выполняться в алфавитном порядке.
Первое, что нужно сделать, это установить некоторые пакеты, чтобы наша команда pip install была выполнена успешно. Для этого давайте создадим файл с именем .ebextensions/01_packages.config:
packages:
yum:
git: []
postgresql93-devel: []
libjpeg-turbo-devel: []
Экземпляры EC2 работают под управлением Amazon Linux, который представляет собой разновидность Redhat, поэтому мы можем использовать yum для установки необходимых пакетов. Сейчас мы только собираемся установить три пакета - git, клиент Postgres и libjpeg для Pillow.
Я обнаружил, что на этой странице были представлены лучшие инструкции по установке PostgreSQL на моем mac и что команда установки pip отлично работала после этого:
https://www.codefellows.org/blog/three-battle-tested-ways-to-install-postgresql