Як встановити 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 ... ??
lajarre

2
Для python 3.4 або python 3.5 ви повинні встановити відповідний пакет версій dev на зразок sudo apt install libpq-dev python3.4-devабоsudo apt install libpq-dev python3.5-dev
Avinash Raj

Відповіді:


809

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


Варіант 1

Встановіть psycopg2-binaryзамість цього пакет PyPI, він має колеса Python для Linux та Mac OS.

pip install psycopg2-binary

Варіант 2

Встановіть передумови для складання psycopg2пакета з джерела:

Debian / Ubuntu

Пітон 3

sudo apt install libpq-dev python3-dev

Можливо, вам знадобиться встановити python3.8-devабо подібне, наприклад, Python 3.8.

Пітон 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)?
lajarre

5
Якщо ви знаходитесь тут, тому що у вас виникають проблеми з установкою psycopg2 в контейнер python 3 Celery з Dockerhub, вам також потрібно буде встановити build- sudo apt-get install -y build-essential
basic

118

У CentOS вам потрібні пакети розробників postgres:

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 на базі RHEL / 2.5.1
Ben Wheeler

Для 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 року]
користувач798719

2
якщо ви використовуєте virtualenv, вам не потрібен 'sudo' настільки активний ваш virtualenv і запустіть 'PATH = $ PATH: /Applications/Postgres.app/Contents/Versions/9.3/bin pip встановити 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
Diego Sarmiento

80

якщо ви на Mac, ви можете використовувати домашню мову

brew install postgresql

А всі інші варіанти тут: http://www.postgresql.org/download/macosx/

Удачі


2
Відповідь nichochar та відповідь attomos (встановити postgresql та змінити шлях) разом вирішили проблему для мене. найпростіший спосіб змінити шлях - це запустити "sudo nano / etc / path" зі свого терміналу.
tbradley22

2
Дякую за це. Я збирався зійти з розуму, перш ніж знайшов це!
Лео С Хань

1
Працював і для мене, не потрібно маніпулювати моїм шляхом (і взагалі я не рекомендував би тут судо - ви повинні мати можливість це робити в просторі користувача).
дуозмо

Це не встановлює postgresql так, virtualenvяк запитував ОП.
Хорхе Лейтао

Я не думаю, що ОП обов'язково хотіла постгресів у віртуале. Він сказав, що використовує virtualenv. Я думаю, що він неправильно зрозумів, що postgresql - це більша послуга, ніж просто бібліотека пітонів.
nichochar

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
Цей трюк (ввічливість, Нед Батчелдер) допоміг мені в минулому встановити з двійкових файлів на virtualenv
Praveen Gollakota

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.
похмурий

Вам не доведеться цього робити, якщо ви перезавантажуєте термінальний сеанс.
radtek

Відмінно Дякую
Хорхе Відінья

Якщо ви використовуєте Python 3, вам потрібно буде встановити нумеровані пакети розробки Python. Дивіться: 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.

Більшість відповідей також пропонує встановити бібліотеку розробників Python. Будь обережний. Якщо ви використовуєте лише встановлений вашим дистрибутивом Python за замовчуванням, це буде працювати, але якщо у вас є нова версія, це може спричинити проблеми. Якщо ви створили Python на цій машині, тоді у вас вже є бібліотеки розробників, необхідні для компіляції бібліотек C / C ++ для взаємодії з Python. Поки ви використовуєте правильну версію pip, встановлену в тій же папці бін, що і бінарну python, тоді все налаштовано. Не потрібно встановлювати стару версію.


1
А про Os x? Я маю на увазі, базується на Unix, але я думаю, що це може бути інакше.
Лара

13

Увімкнено Debian/Ubuntu:

Спочатку встановіть та складіть залежності psycopg2пакету:

# apt-get build-dep python-psycopg2

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

(env)$ pip install psycopg2

6

Я робив це раніше, коли у Windows ви спочатку встановлюєте в основну установку python.

Потім ви вручну скопіюєте встановлений psycopg2 в установку virtualenv.

Це не дуже, але це працює.


2
чи можете ви детальніше розробити. Звідки у вас в першу чергу психологія2?
Сахер Аваль 20

2
Бінарні файли Windows доступні на сторінці stickpeople.com/projects/python/win-psycopg
monkut

Я це зробив і після виснажливих днів та всіх інших варіантів, описаних в Інтернеті. Я все ще ошелешений щодо того, що заважало встановити його з протоколом venv. Мені вдалося встановити поза віртуального середовища, без проблем. Потім я буквально скопіював цей файл з мого каталогу бібліотеки пакетів Python і вставив його в межах venv. Моя думка полягає в тому, що, тому що моя версія (і) Python - це дистрибуції Anaconda, що з цим шляхом, який передбачався / використовувався, було щось не так.
kuanb

5

Крім встановлення необхідних пакетів, мені також потрібно було вручну додати каталог біт 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; __ файл __ = '/ приватний / tmp / pip-build-AUbwwG / psycopg2 / setup.py'; exec (compile (getattr (tokenize, 'відкрити', відкрити), відкрити ) ( файл ) .read (). Заміна ('\ r \ n', '\ n'), файл , 'exec')) "встановити --record /tmp/pip-44Va05-record/install-record.txt - faille-version-external-Managed --compile "не вдалося з кодом помилки 1 в / private / tmp / pip-build-AUbwwG / psycopg2
vijay

3

У Windows XP ви отримуєте цю помилку, якщо не встановлено postgres ...


ти впевнений, що це правильно? Я встановив postgres на своїй машині Windows, і я все ще отримую це. ?
Сахер Аваль 20

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виправлена ​​проблема.
Арбаз Хуссейн

2

Я боровся з цим цілими днями і нарешті з'ясував, як змусити команду "pip install psycopg2" запуститись у virtualenv в Windows (запуск Cygwin).

Я натискав "виконуваний файл pg_config не знайдено". помилка, але я вже завантажив і встановив postgres у Windows. Він також встановлений у Cygwin; запуск "котрий 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. (Це, мабуть, краще використовувати Cygwin версії PostgreSQL в будь-якому випадку, оскільки рідна версія буде працювати швидше).


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

Недобра практика змішувати пакети піп та пакети apt-get.
wswld

1

Для користувачів з низькою швидкістю Windows застрягло, що потрібно встановити psycopg2 за посиланням нижче, просто встановіть його на будь-яку установку Python у вас є. Він розмістить папку з назвою "psycopg2" у папці site-пакети вашої установки python.

Після цього просто скопіюйте цю папку в каталог сайтів пакунків вашого 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 та вгадуєте пароль.
Гаррі Морено

1

У розподілі бази Arch :

sudo pacman -S python-psycopg2
pip2 install psycopg2  # Use pip or pip3 to python3


0

У Ubuntu мені просто знадобився пакет розробників postgres:

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

* Випробуваний у virtualenv


0

На OSX 10.11.6 (El Capitan)

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

На OSX 10.12.3 (Сьєрра):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 - які працювали на мене - оновили його оновленням програмного забезпечення, попередня версія інструментів командного рядка в Mojave не працювала для мене.



-2

У Windows це так працює.
У командному рядку після установки flask через pip у віртуальному середовищі запустіть цю команду

>pip install psycopg2

Перевірте це

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.