Mac + virtualenv + pip + postgresql = Ошибка: исполняемый файл pg_config не найден

Я пытался установить postgres для учебника, но pip дает мне ошибку:

pip install psycopg

Я получаю сообщение об ошибке:

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'.

Где pg_config в моем virtualenv? Как его настроить? Я использую virtualenv, потому что мне не нужна общесистемная установка postgres.

Ответ 1

На Mac, если вы используете Postgres.app, файл pg_config находится в вашем каталоге /Applications/Postgres.app/Contents/Versions/<current_version>/bin. Это нужно добавить в системный путь, чтобы исправить эту ошибку, например:

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/<current_version>/bin

Так, например, если текущая версия Postgres.app - 9.5, строка экспорта будет выглядеть так:

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

В более поздних версиях Postgres.app(> 9.5?) вы можете просто добавить "последний" вместо номера версии, например:

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

Ответ 2

На Mac решение должно установить postgresql:

brew install postgresql

В CentOS решение состоит в установке postgresql-devel:

sudo yum install postgresql-devel

pg_config находится в пакете postgresql-devel

Ответ 3

Я полностью согласен с Джоном Хайтом в том, что большинство опубликованных ответов абсолютно оффтопны, если предположить, что ОП точно определил необходимость использования virtualenv.

Для меня ответом было запустить следующую команду в приглашении, активировав virtualenv:

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

(обратите внимание, что часть 9.4 означает версию и может отличаться)

или если вы хотите использовать последнюю установленную версию Postgres:

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

а затем:

pip install psycopg2

успешно работает, если вы установили postgres. А если нет, то помните, что лучшим и рекомендуемым решением является использование: Postgres.app

Ответ 4

Не забывайте, что ваша переменная $PATH в виртуальной среде!= ваша глобальная переменная $PATH. Вы можете подтвердить это с помощью "echo $PATH" в вашем virtualenv, а также в новой оболочке. Таким образом, если вы не хотите устанавливать PostgreSQL как уникальный экземпляр внутри вашей виртуальной среды (не стоит этого делать, imo), вам нужно будет изменить переменную $PATH в virtualenv, чтобы включить путь к вашей глобальной установке (который будет решить вашу отсутствующую ошибку pg_config).

Вот шаги:

1.) В новой оболочке введите 'which pg_config'. Это вернет путь. Скопируйте его. В моем случае путь выглядел так:/Applications/Postgres.app/Contents/Versions/9.3/bin

2.) Вернитесь в свою виртуальную оболочку, введите 'export PATH =/your-path-to-pg_config: $PATH'

3.) Затем, все еще в пределах virtualenv, 'pip install psycopg2'

Если все идет по плану, это установит psycopg2 в виртуальной среде, но установка будет ссылаться на вашу установку Global PostgreSQL. В моем случае эта глобальная установка была установлена ​​через Postgres.App, следовательно, путь. Я предпочитаю этот метод работы с psycopg2, поскольку это означает, что я могу легко использовать базу данных в любом виртуальном пространстве, а не только в пределах определенной виртуальной среды.

Надеюсь, это поможет любому, кто приедет сюда. Для сока Google здесь возникает явный (и неопределенный) язык ошибок, когда вы сталкиваетесь с этой проблемой:
Ошибка командной строки python setup.py egg_info с кодом ошибки 1

Ответ 5

Вот как я смог решить эту проблему на моем Mac (OSX 10.9):

brew update
brew install --force ossp-uuid
brew install postgresql
pip install psycopg

У меня возникла ошибка CLANG, когда я попробовал pip install psycopg (LLVM 5.1 issue), поэтому мне пришлось установить psycopg с помощью этой команды вместо:

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install psycopg

Он похож на решение Mingyu, но есть достаточные различия, которые, как я думал, стоили обмена.

Ответ 6

Эта ошибка возникает, когда инструменты сборки не могут найти библиотеки Postgresql.

Часто ему нужно было указать psycopg2, как найти двоичный файл pg_config, вы можете:

  • добавить путь к pg_config в ваш путь к оболочке (/usr/local/pgsql/bin/)

  • или отредактируйте файл setup.cfg в исходной папке psycopg2 и укажите полный путь к pg_config в строке, начинающейся с pg_config =

pg_config =/USR/локальные/PgSQL/бен/pg_config

  • приведенный выше пример, вы можете сделать locate pg_config, чтобы узнать, где он находится, или просто введите which pg_config, и он должен указать вам путь.

Менее часто ошибка возникает из-за отсутствия установки postgresql в вашей системе. Если да, загрузите и создайте postgres или загрузите предварительно созданный двоичный файл psycopg2 для OS X.

Ответ 7

Для OS X El Capitan (10.11.6) + brew + virtualenv + PostgreSQL 9.5:

После установки PostgreSQL 9.5:

brew install [email protected]

Затем откройте свой терминал и выполните:

export PATH=$PATH:/usr/local/opt/postgresql\@9.5/bin/
pip install psycopg2

Ответ 9

virtualenv предназначен для пакетов python. Я не думаю, что вы сможете содержать postgres внутри virtualenv. Сообщение об ошибке, которое вы видите, предположительно, потому что вы еще не установили postgres. Psycopg2 install script ищет файлы postgres (в данном случае pg_config) и не находит их, потому что он не установлен. postgres нельзя установить с помощью pip или virtualenv.

Ответ 10

В дополнение к ответам, предоставленным @bkev и @andi, согласно documentation на Postgres.app, вы должны добавить следуя вашему файлу bash_profile на Mac:

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

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

Ответ 11

Если вы используете postgresql 9.4, файл находится в

/usr/pgsql-9.4/bin/pg_config

Название пакета

postgresql94-9.4.9-1PGDG.rhel6.x86_64

чтобы добавить pg_config в ваш PATH, выполните следующие

PATH=$PATH:/usr/pgsql-9.4/bin/

Ответ 12

В Ubuntu мне просто нужен пакет postgres dev:

sudo apt-get install postgresql-server-dev-all

Ответ 13

Моя была расположена в /Library/PostgreSQL/9.4/bin

export PATH=$PATH:/Library/PostgreSQL/9.4/bin

Ответ 14

Если вам не нужно специально использовать драйвер psycopg, переключитесь на драйвер pg8000. Это чистый Python и менее привередливый.