Как установить psycopg2 с «pip» на Python?


506

Я использую virtualenvи мне нужно установить "psycopg2".

Я сделал следующее:

pip install http://pypi.python.org/packages/source/p/psycopg2/psycopg2-2.4.tar.gz#md5=24f4368e2cfdc1a2b03282ddda814160

И у меня есть следующие сообщения:

Downloading/unpacking http://pypi.python.org/packages/source/p/psycopg2/psycopg2
-2.4.tar.gz#md5=24f4368e2cfdc1a2b03282ddda814160
  Downloading psycopg2-2.4.tar.gz (607Kb): 607Kb downloaded
  Running setup.py egg_info for package from http://pypi.python.org/packages/sou
rce/p/psycopg2/psycopg2-2.4.tar.gz#md5=24f4368e2cfdc1a2b03282ddda814160
    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'.
    Complete output from command python setup.py egg_info:
    running egg_info

creating pip-egg-info\psycopg2.egg-info

writing pip-egg-info\psycopg2.egg-info\PKG-INFO

writing top-level names to pip-egg-info\psycopg2.egg-info\top_level.txt

writing dependency_links to pip-egg-info\psycopg2.egg-info\dependency_links.txt

writing manifest file 'pip-egg-info\psycopg2.egg-info\SOURCES.txt'

warning: manifest_maker: standard file '-c' not found

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
Storing complete log in C:\Documents and Settings\anlopes\Application Data\pip\p
ip.log

Мой вопрос, мне нужно только сделать это, чтобы psycopg2 работал?

python setup.py build_ext --pg-config /path/to/pg_config build ...

3
Это сработало, когда вы попробовали python setup.py build_ext --pg-config / path / to / pg_config build ... ??
Ладжарре

2
Для python 3.4 или python 3.5 вы должны установить соответствующий пакет разработчика verion, например, sudo apt install libpq-dev python3.4-devилиsudo apt install libpq-dev python3.5-dev
Avinash Raj

Ответы:


810

Примечание . С недавних пор в PyPI есть двоичные диски для Windows, так что это больше не должно быть проблемой для пользователей Windows. Ниже приведены решения для пользователей Linux и Mac, так как многие из них находят этот пост через веб-поиск.


Опция 1

psycopg2-binaryВместо этого установите пакет PyPI, он имеет колеса Python для Linux и Mac OS.

pip install psycopg2-binary

Вариант 2

Установите предварительные требования для сборки psycopg2пакета из исходного кода:

Debian / Ubuntu

Python 3

sudo apt install libpq-dev python3-dev

Возможно, вам придется установить python3.8-devили аналогичный, например, для Python 3.8.

Python 2 1

sudo apt install libpq-dev python-dev

Если этого недостаточно, попробуйте

sudo apt install build-essential

или

sudo apt install postgresql-server-dev-all

а также перед установкой psycopg2.

CentOS 6

Смотрите ответ Банжера


1 Действительно? Это 2020


7
11.04: разные ошибки, одно и то же решение. Поклонение разработчикам версий!
I159

5
@ I159 - В *-devпакетах содержат файлы , необходимые для компиляции приложения из исходного кода , который использует функцию , предоставляемую библиотека (как psycopg2ИСПОЛЬЗУЕТ libpqи pythonбиблиотеки, среди прочих).
Джоар

21
Я использую Ubuntu 12.04 LTS, и мне также пришлосьsudo apt-get install postgresql-server-dev-all
caleb

4
Может кто-нибудь объяснить, почему не просто каталог, содержащий pg_config для PATH (или использовать --pg-config)?
Ладжарре

5
Если вы оказались здесь, потому что у вас возникли проблемы с установкой psycopg2 в контейнер Python 3 Celery из Dockerhub, вам также потребуется установить build-essential сsudo apt-get install -y build-essential
derrend

118

В CentOS вам необходимы пакеты postgres dev:

sudo yum install python-devel postgresql-devel

Это было решение на CentOS 6 по крайней мере.


1
Это не просто CentOS, я думаю. У psycopg есть нативные зависимости, поэтому для сборки из исходного кода (что и делает pip) должны быть библиотеки разработки PostgreSQL. (Может быть, заголовки C? Я не знаю много о компиляции нативного кода.)
jpmc26

3
Я согласен, что это решает проблему с CentOS 6. Я хотел бы добавить, что мне пришлось добавить /usr/pgsql-9.3/bin в $ PATH. Вот пост, содержащий пример того, как это сделать. serverfault.com/questions/102932/…
Райдер Брукс

Для CentOS 7 и Python 3.4 мне пришлось установить «python34-devel». Мой ответ на связанный вопрос: stackoverflow.com/a/42370489/26219
Марк Эдингтон

Работал на AWS EC2 с 64-битной Amazon Linux / 2.5.1 на основе RHEL
Бен Уилер,

Для Python3 в Fedora используйте sudo yum install python36-devel(замените 36 вашей версией Python 3).
LoMaPh

85

На Mac Mavericks с Postgres.app версии 9.3.2.0 RC2 мне нужно было использовать следующий код после установки Postgres:

sudo PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin pip install psycopg2


sudo PATH = $ PATH: /Applications/Postgres93.app/Contents/MacOS/bin pip install psycopg2 [по состоянию на 5 апреля 2014 года]
user798719

2
если вы используете virtualenv, вам не нужен «sudo», поэтому активируйте свой virtualenv и запустите «PATH = $ PATH: /Applications/Postgres.app/Contents/Versions/9.3/bin pip install psycopg2»
elin3t

3
Мой случай OS X Ver 10.9.4: sudo PATH = $ PATH: /Library/PostgreSQL/9.2/bin pip install psycopg2
emecas

3
Да, это сработало и для меня. После установки PostgreSQL мне пришлось установить свой путь, выполнив PATH=$PATH:/Library/PostgreSQL/9.4/bin pip install psycopg2.
iamfrancisyo

4
Используйте последнюю версию: PATH = $ PATH: /Applications/Postgres.app/Contents/Versions/latest/bin pip install psycopg2
Диего Сармьенто,

80

если вы на Mac, вы можете использовать доморощенный

brew install postgresql

И все остальные варианты здесь: http://www.postgresql.org/download/macosx/

Удачи


2
Ответ nichochar и ответ attomos (установите postgresql и измените путь) вместе решили проблему для меня. Самый простой способ отредактировать путь - запустить «sudo nano / etc / path» из вашего терминала.
tbradley22

2
Спасибо тебе за это. Я собирался сойти с ума, прежде чем я нашел это!
Leo C Han

1
Сработало и для меня, не нужно ломать голову над моим путем (и вообще, я бы не советовал sudo здесь - вы должны быть в состоянии сделать это в пространстве пользователя).
duozmo

Это не устанавливает postgresql в соответствии virtualenvс запросом OP.
Хорхе Лейтао

Я не думаю, что OP обязательно хотел postgres в virtualenv. Он сказал, что использует virtualenv. Я думаю, он неправильно понял, что postgresql - это больше, чем просто библиотека Python.
ничочар

61

Я недавно настроил psycopg2 на машине с Windows. Самая простая установка - использование исполняемого файла Windows. Вы можете найти его по адресу http://stickpeople.com/projects/python/win-psycopg/ .

Чтобы установить собственный двоичный файл в виртуальной среде, используйте easy_install:

C:\virtualenv\Scripts\> activate.bat
(virtualenv) C:\virtualenv\Scripts\> easy_install psycopg2-2.5.win32-py2.7-pg9.2.4-release.exe

3
Спасибо за ответ. Но мне нужно установить в виртуальную среду. С наилучшими пожеланиями,
Андре

4
Этот трюк (любезно предоставленный Недом Батчелдером) помог мне в прошлом устанавливать из двоичных файлов в виртуальный
Правин Голлакота,

13
Неужели нет способа заставить pip install psycopg2 работать на Windows? Даже если необходим патч для psycopg2, это того стоит.
рабство

1
Я получил эту ошибку, когда postgres не был установлен на моей машине - я установил postgres и ошибка ушла ...
Сэм Джозеф,

2
ссылка на stickpeople также обсуждает виртуальный env и указывает на версию установки pip github.com/nwcell/psycopg2-windows
seanv507

27

Для Python 3 вы должны использовать sudo apt-get install libpq-dev python3-devпод Debian.


27

Вот что у меня сработало (На RHEL, CentOS:

sudo yum install postgresql postgresql-devel python-devel

А теперь включите путь к вашему бинарному каталогу postgresql при установке pip:

sudo PATH=$PATH:/usr/pgsql-9.3/bin/ pip install psycopg2

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

ОБНОВЛЕНИЕ: Для Python 3, пожалуйста, установите python3-develвместоpython-devel


Обратите внимание, что мне не нужно обновлять переменную среды PATH.
мрачный

Вам не нужно делать это, если вы перезагрузите сеанс терминала.
Радтек

Отлично Спасибо большое.
Хорхе Видинья

Если вы используете Python 3, вам нужно установить пронумерованные пакеты Python devel. См .: stackoverflow.com/a/42370489/26219
Марк Эдингтон

21

Если вы используете Mac OS, вы должны установить PostgreSQL из исходного кода. После завершения установки вам нужно добавить этот путь, используя:

export PATH=/local/pgsql/bin:$PATH

или вы можете добавить путь следующим образом:

export PATH=.../:usr/local/pgsql/bin

в вашем .profileфайле или .zshrcфайле.

Это может варьироваться в зависимости от операционной системы.

Вы можете следить за процессом установки с http://www.thegeekstuff.com/2009/04/linux-postgresql-install-and-configure-from-source/


1
Почему из источника вместо Homebrew?
duozmo

@duozmo ответили в 2012 году, и я думаю, что в то время я пытался установить его с Homebrew, но это не удалось. Теперь я установил PostgreSQL, используя Homebrew без проблем.
attomos

17

Пока ответы слишком похожи на магические рецепты. Полученная ошибка говорит о том, что pip не может найти необходимую часть библиотеки запросов PostgreSQL. Возможно, это связано с тем, что он установлен в нестандартном для вашей ОС месте, поэтому в сообщении предлагается использовать параметр --pg-config.

Но более распространенная причина в том, что у вас вообще не установлен libpq. Это обычно происходит на машинах, где у вас НЕ установлен сервер PostgreSQL, потому что вы хотите запускать только клиентские приложения, а не сам сервер. Каждая ОС / дистрибутив отличается, например, в Debian / Ubuntu вам нужно установить libpq-dev. Это позволяет вам компилировать и связывать код с библиотекой PostgreSQL Query.

В большинстве ответов также предлагается установить библиотеку разработчика Python. Быть осторожен. Если вы используете только установленный по умолчанию дистрибутив Python, это будет работать, но если у вас более новая версия, это может вызвать проблемы. Если вы собрали Python на этом компьютере, то у вас уже есть библиотеки dev, необходимые для компиляции библиотек C / C ++ для взаимодействия с Python. Если вы используете правильную версию pip, установленную в той же папке bin, что и двоичный файл python, то все готово. Не нужно устанавливать старую версию.


1
А про ос х? Я имею в виду, основан на Unix, но я думаю, что может быть по-другому.
Лара

13

На Debian/Ubuntu:

Сначала установите и соберите зависимости psycopg2пакета:

# apt-get build-dep python-psycopg2

Затем в вашей виртуальной среде скомпилируйте и установите psycopg2модуль:

(env)$ pip install psycopg2

6

Я делал это раньше, где в Windows вы сначала устанавливаете базовую версию Python.

Затем вы вручную копируете установленную программу psycopg2 в установку virtualenv.

Это не красиво, но это работает.


2
не могли бы вы уточнить, пожалуйста. Где вы берете psycopg2 на первом месте?
Сахер Ахвал

2
бинарные файлы для Windows доступны на stickpeople.com/projects/python/win-psycopg
monkut

Я сделал это также, после утомительных дней и всех других вариантов, которые были описаны онлайн. Я все еще ошеломлен относительно того, что препятствовало тому, чтобы это было установлено с пипом в venv. Мне удалось установить вне виртуальной среды, никаких проблем. Затем я буквально скопировал этот файл из моего каталога библиотеки пакетов Python и вставил в тот же самый файл внутри venv. Я догадываюсь, что, поскольку мои версии Python являются дистрибутивами Anaconda, что с путём, который предполагался / использовался, было что-то не так.
kuanb

5

Помимо установки необходимых пакетов, мне также нужно было вручную добавить каталог bin PostgreSQL в PATH.
$vi ~/.bash_profile
Добавить PATH=/usr/pgsql-9.2/bin:$PATHдо export PATH.
$source ~/.bash_profile
$pip install psycopg2


Любая идея, почему это не заканчивается в пути по умолчанию?
Брет

1
Я получил сообщение об ошибке, как это исправить, пожалуйста, помогите мне! Команда "/ usr / bin / python -c" импортирует setuptools, tokenize; __ file __ = '/ private / tmp / pip-build-AUbwwG / psycopg2 / setup.py'; exec (compile (getattr (tokenize, 'open', open, open ) ( файл ) .read (). replace ('\ r \ n', '\ n'), файл , 'exec')) "install --record /tmp/pip-44Va05-record/install-record.txt --single-версия-внешне управляемого --compile»завершилась с кодом ошибки 1 в / частных / TMP / пип-билд-AUbwwG / psycopg2
Виджей

3

В Windows XP вы получаете эту ошибку, если postgres не установлен ...


ты уверен что это правильно? Я установил Postgres на моей машине Windows, и я все еще получаю это. ?
Сахер Ахвал

2
Почему они не размещают это на своем сайте в качестве предварительного запроса на postgres?
Сахер Ахвал


3

Прежде чем вы сможете установить psycopg2, вам нужно установить пакет python-dev.

Если вы работаете с Linux (и, возможно, с другими системами, но я не могу сказать по своему опыту), вам нужно быть очень точным в том, какую версию python вы используете при установке пакета dev.

Например, когда я использовал команду:

sudo apt-get install python3-dev

Я все еще сталкивался с той же ошибкой при попытке

pip install psycopg2

Поскольку я использую Python 3.7 мне нужно было использовать команду

sudo apt-get install python3.7-dev

Как только я это сделал, я больше не сталкивался с проблемами. Очевидно, что если вы используете Python версии 3.5, вы бы изменили 7 на 5.


2
Это должен быть ответ, sudo apt-get install python-x.x-devисправленный вопрос.
Arbazz Hussain

2

Я боролся с этим в течение нескольких дней и наконец понял, как заставить команду «pip install psycopg2» работать в virtualenv в Windows (под управлением Cygwin).

Я нажимал «не найден исполняемый файл pg_config». ошибка, но я уже скачал и установил postgres в Windows. Он также установлен в Cygwin; запуск "which pg_config" в Cygwin дал "/ usr / bin / pg_config", а запуск "pg_config" дал вменяемый вывод - однако версия, установленная с Cygwin:

VERSION = PostgreSQL 8.2.11

Это не будет работать с текущей версией psycopg2, для которой требуется как минимум 9.1. Когда я добавил «c: \ Program Files \ PostgreSQL \ 9.2 \ bin» в путь Windows, установщик Cygwin pip смог найти правильную версию PostgreSQL, и я смог успешно установить модуль с помощью pip. (В любом случае это, вероятно, предпочтительнее, чем использовать версию PostgreSQL для Cygwin, поскольку нативная версия будет работать намного быстрее).


2

На Fedora 24: для Python 3.x

sudo dnf install postgresql-devel python3-devel

sudo dnf install redhat-rpm-config

Активируйте вашу виртуальную среду:

pip install psycopg2

2

Psycopg2 зависит от библиотек Postgres. В Ubuntu Вы можете использовать:

apt-get install libpq-dev

Затем:

pip install psycopg2

Не рекомендуется смешивать пакеты pip и пакеты apt-get.
Wswld

1

Для пользователей Windows с низким уровнем дохода застряли на необходимости установить psycopg2 по ссылке ниже, просто установите ее на любую установленную вами версию Python. Он поместит папку с именем «psycopg2» в папку site-packages вашей установки на python.

После этого просто скопируйте эту папку в каталог site-packages вашего virtualenv, и у вас не возникнет проблем.

вот ссылка, по которой вы можете найти исполняемый файл для установки psycopg2

http://www.lfd.uci.edu/~gohlke/pythonlibs/


Я попробовал это, и я получил psycopg2-2.6-cp34-none-win_amd64.whl не поддерживается колесо на этой платформе.
jayeshkv


1

Я мог установить его на машине с Windows и использовать Anaconda / Spyder с python 2.7 с помощью следующих команд:

 !pip install psycopg2

Затем установить соединение с базой данных:

 import psycopg2
 conn = psycopg2.connect(dbname='dbname',host='host_name',port='port_number', user='user_name', password='password')

Я получил это, работая с базой данных, перечисленной в psql -l, host localhost, портом базы данных по умолчанию 5432, пользователем, перечисленным с, как \duтолько вы входите в psql и угадываете пароль.
Гарри Морено



0

В Ubuntu мне просто понадобился пакет postgres dev:

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

* Проверено в virtualenv


0

На OSX 10.11.6 (Эль-Капитан)

brew install postgresql
PATH=$PATH:/Library/PostgreSQL/9.4/bin pip install psycopg2

На OSX 10.12.3 (Sierra):brew install postgresql PATH=$PATH:/usr/local/Cellar/postgresql/9.6.2/bin/ pip install psycopg2
ishandutta2007

На OS X 10.14 это было очень сложно. Подробное решение смотрите здесь: stackoverflow.com/a/57014480/2162844
Bisonbleu


0

У меня была эта проблема, основная причина была с 2-мя равными версиями. Один от postgres.app и один от HomeBrew.

Если вы решили оставить только приложение:

brew unlink postgresql
pip3 install psycopg2

0

В MacOS Mojave убедитесь, что вы используете новейшее обновление с помощью инструментов командной строки 10.3, которое работало для меня, обновили его с помощью Software Update, предыдущая версия инструментов командной строки на Mojave не работала для меня.



-2

В Windows это работает.
В командной строке после установки флешки через pip в виртуальной среде выполните эту команду.

>pip install psycopg2

Проверьте это

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.