Как установить 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.