Вам потрібно встановити postgresql-server-dev-XY для побудови розширення на стороні сервера або libpq-dev для створення програми на стороні клієнта


243

Я працюю над проектом Django з virtualenv і підключаю його до локальної бази даних postgres. коли я запускаю проект каже,

ImportError: No module named psycopg2.extensions

тоді я використав цю команду для установки

pip install psycopg2

то під час встановлення він дає наступну помилку.

Downloading/unpacking psycopg2==2.4.4
  Downloading psycopg2-2.4.4.tar.gz (648kB): 648kB downloaded
  Running setup.py (path:/home/muhammadtaqi/Projects/MyProjects/OnlineElectionCampaign/venv/build/psycopg2/setup.py) egg_info for package psycopg2

    Error: You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.

    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: You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.



----------------------------------------
Cleaning up...
Command python setup.py egg_info failed with error code 1 in /home/muhammadtaqi/Projects/MyProjects/OnlineElectionCampaign/venv/build/psycopg2
Storing debug log for failure in /home/muhammadtaqi/.pip/pip.log

Ви встановили цей пакет? Якщо ні, то встановлення повинно вирішити проблему. Зауважте, що встановлення postgresql-server-X.Yсамостійно не допоможе, оскільки це просто встановлює бінарний сервер, бібліотеки та файли даних, а не файли розробки (які є у вищезгаданому пакеті).
Abrixas2

Відповіді:


490

Використовуйте наступні команди, це дозволить вирішити помилку:

sudo apt-get install postgresql

тоді вогонь:

sudo apt-get install python-psycopg2

і останнє:

sudo apt-get install libpq-dev

36
Мені просто потрібні були клієнтські лайки. "sudo apt-get install libpq-dev" вирішив це для мене. Спасибі
Priyeshj

6
Я виявив, що мені потрібно встановити sudo apt-get install python-devдодатково, щоб змусити його нарешті працювати
ScottMcC

18
Дякую! sudo apt-get install libpq-devпрацював на мене!
Джуліан Гутерман

1
@ManishShrivastava, Ласкаво просимо
MegaBytes

1
використовувати, sudo apt-get install python3-psycopg2щоб додати до python3
Ramesh Verma

67

Я просто запускаю цю команду як корінь з терміналу і проблема вирішена,

sudo apt-get install -y postgis postgresql-9.3-postgis-2.1
pip install psycopg2

або

sudo apt-get install libpq-dev python-dev
pip install psycopg2

5
Велике спасибі libpq-devі python-devзробив необхідну магію
автомат

2
postgis? woot
techkuz

іноді запущене оновлення sudo apt виправить цей тип помилок. Я спробував обидва рішення, але не вдалося. біг sudo apt udpate вирішив це.
Алеем


30

Для мене ця проста команда вирішила проблему:

sudo apt-get install postgresql postgresql-contrib libpq-dev python-dev

Тоді я можу зробити:

 pip install psycopg2

14

Для Python 3 я зробив:

sudo apt install python3-dev postgresql postgresql-contrib python3-psycopg2 libpq-dev

і тоді я зміг зробити:

pip3 install psycopg2

13

Вони змінили упаковку на psycopg2. Встановлення двійкової версії вирішило цю проблему для мене. Наведені вище відповіді все ще зберігаються, якщо ви хочете скласти двійковий файл самостійно.

Дивіться http://initd.org/psycopg/docs/news.html#what-s-new-in-psycopg-2-8 .

Бінарні пакети більше не встановлені за замовчуванням. Пакет 'psycopg2-binary' повинен використовуватися явно.

І http://initd.org/psycopg/docs/install.html#binary-install-from-pypi

Тому якщо вам не потрібно збирати свій власний бінарний файл, використовуйте:

pip install psycopg2-binary

1
Ви, сер, врятували мені життя
Харун Хаєм

3
psycopg2-binaryне слід використовувати у виробництві, оскільки це спричинить деякі помилки.
suhailvs

1
psycopg2-binaryне слід використовувати у виробництві: initd.org/psycopg/docs/install.html#binary-install-from-pypi (Скопійований текст: Pscopg2-бінарний пакет призначений для початківців, щоб почати грати з Python та PostgreSQL без необхідності відповідати вимогам збірки. Якщо ви підтримуєте пакет публікації залежно від psycopg2, ви не повинні використовувати "psycopg2-binary" як модульну залежність. Для виробничого використання вам рекомендується використовувати джерело розповсюдження.)
Джозеф Віктор Замміт

10

Ви повинні встановити postgresql-server-dev-XY, де версія XY ваших серверів, і він встановить libpq-dev та інші змінні сервери в модулі для розробки на стороні сервера. У моєму випадку це було

apt-get install postgresql-server-dev-9.5

Читання списків пакунків ... Готово дерево залежності залежності Читання інформації про стан ... Готово Наступні пакети були встановлені автоматично і більше не потрібні: libmysqlclient18 mysql-common Використовуйте "apt-get autoremove" для їх видалення. Наступні додаткові пакети будуть встановлені:
libpq-dev Пропоновані пакети: postgresql-doc-10 Буде встановлено наступні НОВІ пакети: libpq-dev postgresql-server-dev-9.5

У вашому випадку

sudo apt-get install postgresql-server-dev-X.Y
sudo apt-get install python-psycopg2

4

Я використовував віртуальне середовище на Ubuntu 18.04, і оскільки я хотів встановити його лише як клієнт, мені довелося лише зробити:

sudo apt install libpq-dev
pip install psycopg2

І встановлюється без проблем. Звичайно, ви можете використовувати двійкове, як сказано в інших відповідях, але я віддав перевагу цьому рішенню, оскільки це було зазначено у файлі вимог.txt.

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