Вам необходимо установить 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

Ответы:

491

Используйте эти следующие команды, это решит ошибку:

sudo apt-get install postgresql

затем огонь:

sudo apt-get install python-psycopg2

и последнее:

sudo apt-get install libpq-dev
MegaBytes
источник
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
Рамеш Верма
67

Я просто запускаю эту команду как root от терминала, и проблема решена,

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 решил это.
Алеем
46

Просто установите libpq-dev

$ sudo apt-get install libpq-dev
Иван
источник
30

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

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

Тогда я могу сделать:

 pip install psycopg2
ruhanbidart
источник
14

Для Python 3 я сделал:

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

и тогда я смог сделать:

pip3 install psycopg2
Garrett
источник
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
robkorv
источник
1
Вы, сэр, спасли мне жизнь
Харун Хаджем
3
psycopg2-binaryне должны использоваться в производстве, потому что это вызовет некоторые ошибки.
suhailvs
1
psycopg2-binaryне должны использоваться в производстве: initd.org/psycopg/docs/install.html#binary-install-from-pypi (Скопированный текст: пакет psycopg2-binary предназначен для начинающих, чтобы начать играть с 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

И установил без проблем. Конечно, вы можете использовать двоичный файл, как сказали другие ответы, но я предпочел это решение, поскольку оно было указано в файле require.txt.

Checo R
источник