Você precisa instalar o postgresql-server-dev-XY para construir uma extensão do lado do servidor ou libpq-dev para criar um aplicativo do lado do cliente

243

Estou trabalhando no projeto Django com virtualenv e conecto-o ao banco de dados local do postgres. quando eu executo o projeto diz,

ImportError: No module named psycopg2.extensions

então eu usei este comando para instalar

pip install psycopg2

depois, durante a instalação, dá o seguinte erro.

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
Muhammad Taqi
fonte
Você instalou esse pacote? Caso contrário, a instalação deve resolver o problema. Observe que a instalação postgresql-server-X.Ysozinha não ajudaria, porque isso apenas instala os arquivos binários, bibliotecas e dados do servidor, não os arquivos de desenvolvimento (que estão no pacote mencionado acima).
Abrixas2 31/01

Respostas:

490

Use estes comandos a seguir, isso resolverá o erro:

sudo apt-get install postgresql

então atire:

sudo apt-get install python-psycopg2

e por ultimo:

sudo apt-get install libpq-dev
MegaBytes
fonte
36
Eu só precisava de bibliotecas de clientes. O "sudo apt-get install libpq-dev" resolveu isso para mim. Obrigado
Priyeshj
6
Descobri que eu tinha que instalar também sudo apt-get install python-dev, além de obtê-lo para finalmente trabalho
ScottMcC
18
Obrigado! sudo apt-get install libpq-devtrabalhou para mim!
Julian Guterman 17/05
1
@ManishShrivastava, Welcome
MegaBytes
1
use sudo apt-get install python3-psycopg2para adicionar ao python3
Ramesh Verma
67

Acabei de executar este comando como raiz do terminal e o problema foi resolvido,

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

ou

sudo apt-get install libpq-dev python-dev
pip install psycopg2
Muhammad Taqi
fonte
5
Muito obrigado, libpq-deve python-devfez necessária mágica
avtomaton
2
postgis? woot
techkuz 20/05/19
às vezes, executar o sudo apt update corrigirá esse tipo de erro. Eu tentei a solução, mas falhei. executando o sudo apt udpate o resolveu.
Aleem 02/06
46

Basta instalar o libpq-dev

$ sudo apt-get install libpq-dev
Ivan
fonte
30

Para mim, este comando simples resolveu o problema:

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

Então eu posso fazer:

 pip install psycopg2
ruhanbidart
fonte
14

Para Python 3, eu fiz:

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

e então eu pude fazer:

pip3 install psycopg2
Garrett
fonte
13

Eles mudaram a embalagem do psycopg2. A instalação da versão binária corrigiu esse problema para mim. As respostas acima ainda são válidas se você quiser compilar o binário.

Veja http://initd.org/psycopg/docs/news.html#what-s-new-in-psycopg-2-8 .

Pacotes binários não são mais instalados por padrão. O pacote 'psycopg2-binary' deve ser usado explicitamente.

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

Portanto, se você não precisar compilar seu próprio binário, use:

pip install psycopg2-binary
robkorv
fonte
1
Você senhor salvou minha vida
Haroun Hajem
3
psycopg2-binarynão deve ser usado na produção, porque causará alguns erros.
suhailvs
1
psycopg2-binarynão deve ser usado na produção: initd.org/psycopg/docs/install.html#binary-install-from-pypi (Texto copiado: O pacote psycopg2-binary destina-se a iniciantes que começam a jogar com Python e PostgreSQL sem a necessidade de atenda aos requisitos de compilação. Se você é o mantenedor de um pacote de publicação dependendo do psycopg2, não deve usar 'psycopg2-binary' como uma dependência do módulo. Para uso em produção, é recomendável usar a distribuição de origem.)
Joseph Victor Zammit
10

Você deve configurar o postgresql-server-dev-XY, onde XY é a versão dos servidores, e ele instalará a libpq-dev e outras variáveis ​​de servidores nos módulos para desenvolvimento no servidor. No meu caso foi

apt-get install postgresql-server-dev-9.5

Lendo listas de pacotes ... Concluído Criando árvore de dependência Lendo informações de estado ... Concluído Os seguintes pacotes foram instalados automaticamente e não são mais necessários: libmysqlclient18 mysql-common Use 'apt-get autoremove' para removê-los. Os seguintes pacotes extras serão instalados:
libpq-dev Pacotes sugeridos: postgresql-doc-10 Os seguintes novos pacotes serão instalados: libpq-dev postgresql-server-dev-9.5

No seu caso

sudo apt-get install postgresql-server-dev-X.Y
sudo apt-get install python-psycopg2
Max Sherbakov
fonte
4

Eu estava usando um ambiente virtual no Ubuntu 18.04, e como só queria instalá-lo como cliente, só precisava fazer:

sudo apt install libpq-dev
pip install psycopg2

E instalado sem problemas. Obviamente, você pode usar o binário como outras respostas disseram, mas eu preferi essa solução, pois ela foi declarada em um arquivo requirements.txt.

Checo R
fonte