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

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


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 (Скопированный текст: пакет 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.

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