Como instalar o psycopg2 com o "pip" no Python?

506

Estou usando virtualenve preciso instalar o "psycopg2".

Eu fiz o seguinte:

pip install http://pypi.python.org/packages/source/p/psycopg2/psycopg2-2.4.tar.gz#md5=24f4368e2cfdc1a2b03282ddda814160

E eu tenho as seguintes mensagens:

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

Minha pergunta, eu só preciso fazer isso para que o psycopg2 funcione?

python setup.py build_ext --pg-config /path/to/pg_config build ...
André
fonte
3
Funcionou quando você tentou python setup.py build_ext --pg-config / path / to / pg_config build ... ??
Lajarre 12/10/12
2
Para python 3.4 ou Python 3.5, você tem que instalar o pacote dev do verion correspondente como sudo apt install libpq-dev python3.4-devousudo apt install libpq-dev python3.5-dev
Avinash Raj

Respostas:

810

Nota : Há algum tempo, há rodas binárias para Windows no PyPI, portanto isso não deve mais ser um problema para os usuários do Windows. Abaixo estão as soluções para usuários Linux, Mac, já que muitos deles encontram este post através de pesquisas na web.


Opção 1

Instale o psycopg2-binarypacote PyPI, ele possui rodas Python para Linux e Mac OS.

pip install psycopg2-binary

opção 2

Instale os pré-requisitos para construir o psycopg2pacote a partir da fonte:

Debian / Ubuntu

Python 3

sudo apt install libpq-dev python3-dev

Pode ser necessário instalar python3.8-devou semelhante para, por exemplo, o Python 3.8.

Python 2 1

sudo apt install libpq-dev python-dev

Se isso não for suficiente, tente

sudo apt install build-essential

ou

sudo apt install postgresql-server-dev-all

antes de instalar o psycopg2 novamente.

CentOS 6

Veja a resposta de Banjer


1 Sério? É 2020

joar
fonte
7
11.04: erros diferentes, a mesma solução. Adore as versões para desenvolvedores!
I159
5
@ I159 - Os *-devpacotes contêm os arquivos necessários para compilar um aplicativo a partir da fonte que utiliza as funções fornecidas pela biblioteca (como psycopg2usa as bibliotecas libpqe python, entre outras).
joar
21
Estou usando o Ubuntu 12.04 LTS, e eu também tive quesudo apt-get install postgresql-server-dev-all
Caleb
4
Alguém poderia explicar por que não apenas o diretório que contém pg_config para o PATH (ou use --pg-config)?
Lajarre 11/10/12
5
Se você está aqui porque está tendo problemas para instalar o psycopg2 no contêiner de aipo python 3 do Dockerhub, também precisará instalar o build-essential withsudo apt-get install -y build-essential
derrend
118

No CentOS, você precisa dos pacotes dev do postgres:

sudo yum install python-devel postgresql-devel

Essa foi a solução no CentOS 6, pelo menos.

Banjer
fonte
1
Isso não é apenas o CentOS, eu acho. O psycopg possui dependências nativas; portanto, para criar a partir da fonte (que é o que o pip faz), as bibliotecas de desenvolvimento do PostgreSQL precisam estar lá. (? Os cabeçalhos C, talvez eu não sei muito sobre a compilação de código nativo.)
jpmc26
3
Concordo que isso resolve o problema no CentOS 6. Gostaria de acrescentar que tive que adicionar /usr/pgsql-9.3/bin ao $ PATH. Aqui está um post com um exemplo de como fazer isso. serverfault.com/questions/102932/…
Ryder Brooks
Para o CentOS 7 e o Python 3.4, tive que instalar o "python34-devel". Minha resposta a uma questão relacionada: stackoverflow.com/a/42370489/26219
Mark Edington
Trabalhou no AWS EC2, com 64 bits baseado em RHEL Amazon Linux / 2.5.1
Ben Wheeler
Para Python3 no uso do Fedora sudo yum install python36-devel(substitua 36 pela sua versão do Python 3).
LoMaPh 06/04/19
85

No Mac Mavericks com Postgres.app versão 9.3.2.0 RC2, eu precisei usar o seguinte código após instalar o Postgres:

sudo PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin pip install psycopg2

metasequoia
fonte
sudo PATH = $ PATH: /Applications/Postgres93.app/Contents/MacOS/bin pip install psycopg2 [em 5 de abril de 2014]
user798719
2
se você estiver usando o virtualenv, não precisará do 'sudo' para ativar o seu virtualenv e execute 'PATH = $ PATH: /Applications/Postgres.app/Contents/Versions/9.3/bin pip install psycopg2'
elin3t
3
Meu caso OS X Ver 10.9.4: sudo PATH = $ PATH: /Library/PostgreSQL/9.2/bin pip install psycopg2
emecas
3
Sim, isso funcionou para mim também. Depois de instalar o PostgreSQL, tive que definir meu caminho fazendo isso PATH=$PATH:/Library/PostgreSQL/9.4/bin pip install psycopg2.
Ianfrancisyo
4
Use a versão mais recente: PATH = $ PATH: /Applications/Postgres.app/Contents/Versions/latest/bin pip instalar psycopg2
Diego Sarmiento
80

se você estiver em um mac, você pode usar homebrew

brew install postgresql

E todas as outras opções estão aqui: http://www.postgresql.org/download/macosx/

Boa sorte

nichochar
fonte
2
As respostas de nichochar e de attomos (instalar o postgresql e modificar o caminho) juntas resolveram o problema para mim. a maneira mais fácil de editar o caminho é executar o "sudo nano / etc / path" no seu terminal.
tbradley22
2
Obrigado por isso. Eu estava prestes a enlouquecer antes de encontrar isso!
Leo C Han
1
Funcionou para mim também, não há necessidade de se esconder no meu caminho (e geralmente, eu não recomendaria o sudo aqui - você deve conseguir fazer isso no espaço do usuário).
Duozmo 01/07
Isso não instala o postgresql virtualenvcomo o OP pediu.
Jorge Leitao 17/02
Eu não acho que o OP necessariamente quisesse postgres no virtualenv. Ele disse que está usando o virtualenv. Eu acho que ele entendeu mal que o postgresql é um serviço maior do que simplesmente uma biblioteca python.
Nichochar 18/02
61

Recentemente configurei o psycopg2 em uma máquina Windows. A instalação mais fácil é usar um binário executável do Windows. Você pode encontrá-lo em http://stickpeople.com/projects/python/win-psycopg/ .

Para instalar o binário nativo em um ambiente virtual, use easy_install:

C:\virtualenv\Scripts\> activate.bat
(virtualenv) C:\virtualenv\Scripts\> easy_install psycopg2-2.5.win32-py2.7-pg9.2.4-release.exe
Praveen Gollakota
fonte
3
Obrigado pela resposta. Mas preciso instalar em um ambiente virtual. Atenciosamente,
André
4
Este truque (cortesia, Ned Batchelder) me ajudou no passado para instalar a partir de binários para um virtualenv
Praveen Gollakota
13
Não há realmente nenhuma maneira de "pip install psycopg2" funcionar no Windows? Mesmo que seja necessário um patch para o psycopg2, valeria a pena.
slacy
1
Eu recebi esse erro quando o postgres não estava instalado na minha máquina - instalei o postgres e o erro desapareceu ...
Sam Joseph
2
o link stickpeople também discute env virtual e aponta para um pip instalar a versão github.com/nwcell/psycopg2-windows
seanv507
27

Para Python 3, você deve usar o sudo apt-get install libpq-dev python3-devDebian.

André
fonte
27

Foi isso que funcionou para mim (no RHEL, CentOS:

sudo yum install postgresql postgresql-devel python-devel

E agora inclua o caminho para o diretório binário do postgresql com a instalação do pip:

sudo PATH=$PATH:/usr/pgsql-9.3/bin/ pip install psycopg2

Certifique-se de incluir o caminho correto. Isso é tudo :)

UPDATE: Para python 3, instale em python3-develvez depython-devel

Radtek
fonte
Observe que eu não precisava atualizar a variável de ambiente PATH.
sombrio
Você não precisa se recarregar sua sessão do terminal.
Radtek
Excelente Muito obrigado.
Jorge Vidinha 14/01
Se você estiver usando o Python 3, precisará instalar pacotes numerados do Python devel. Veja: stackoverflow.com/a/42370489/26219
Mark Edington
21

Se você estiver usando o Mac OS, instale o PostgreSQL a partir da fonte. Após a conclusão da instalação, você precisa adicionar este caminho usando:

export PATH=/local/pgsql/bin:$PATH

ou você pode acrescentar o caminho da seguinte maneira:

export PATH=.../:usr/local/pgsql/bin

no seu .profilearquivo ou .zshrcarquivo.

Isso pode variar de acordo com o sistema operacional.

Você pode seguir o processo de instalação em http://www.thegeekstuff.com/2009/04/linux-postgresql-install-and-configure-from-source/

attomos
fonte
1
Por que da fonte em vez do Homebrew?
Duozmo 01/07
@duozmo, foi respondida em 2012 e acredito que tentei instalá-lo com o Homebrew naquela época, mas falhou. Agora, instalei o PostgreSQL usando o Homebrew sem problemas.
attomos
17

As respostas até agora são muito parecidas com receitas mágicas. O erro que você recebeu informa que o pip não consegue encontrar uma parte necessária da biblioteca de consultas do PostgreSQL. Possivelmente isso ocorre porque você o instalou em um local não padrão para o seu sistema operacional e é por isso que a mensagem sugere o uso da opção --pg-config.

Mas um motivo mais comum é que você não tem o libpq instalado. Isso geralmente acontece em máquinas nas quais você NÃO possui o servidor PostgreSQL instalado porque deseja executar apenas aplicativos clientes, não o próprio servidor. Cada sistema operacional / distribuição é diferente; por exemplo, no Debian / Ubuntu, você precisa instalar o libpq-dev. Isso permite que você compile e vincule o código à biblioteca de consultas do PostgreSQL.

A maioria das respostas também sugere a instalação de uma biblioteca de desenvolvimento Python. Seja cuidadoso. Se você estiver usando apenas o Python padrão instalado pela sua distribuição, isso funcionará, mas se você tiver uma versão mais recente, poderá causar problemas. Se você criou o Python nesta máquina, já possui as bibliotecas de desenvolvimento necessárias para compilar as bibliotecas C / C ++ para interagir com o Python. Desde que você esteja usando a versão correta do pip, aquela instalada na mesma pasta bin que o binário python, você estará pronto. Não há necessidade de instalar a versão antiga.

Michael Dillon
fonte
1
E sobre Os x? Quero dizer, é baseado no Unix, mas acho que pode ser diferente.
Lara
13

Ativado Debian/Ubuntu:

Primeiro instale e construa dependências do psycopg2pacote:

# apt-get build-dep python-psycopg2

Em seu ambiente virtual, compile e instale o psycopg2módulo:

(env)$ pip install psycopg2
Omid Raha
fonte
6

Eu já fiz isso antes, em que lugar do Windows você instala primeiro a instalação básica do python.

Em seguida, você copia manualmente o psycopg2 instalado na instalação virtualenv.

Não é bonito, mas funciona.

monkut
fonte
2
você pode elaborar por favor. Onde você consegue o psycopg2 em primeiro lugar?
Saher Ahwal
2
janelas binários estão disponíveis em stickpeople.com/projects/python/win-psycopg
monkut
Fiz isso também, depois de dias exaustivos e de todas as outras opções descritas online. Ainda estou pasmo com o que estava impedindo a instalação do pip in venv. Consegui instalar fora do ambiente virtual, sem problemas. Eu literalmente copiei esse arquivo do meu diretório da biblioteca de pacotes Python e colei dentro do mesmo dentro do diretório venv. Meu palpite é que, porque minhas versões do Python são distribuições do Anaconda, que havia algo errado com o caminho que estava sendo assumido / usado.
precisa saber é
5

Além de instalar os pacotes necessários, eu também precisei adicionar manualmente o diretório bin do PostgreSQL ao PATH.
$vi ~/.bash_profile
Adicione PATH=/usr/pgsql-9.2/bin:$PATHantes export PATH.
$source ~/.bash_profile
$pip install psycopg2

xtranophilist
fonte
Alguma idéia de por que isso não acaba no caminho padrão?
Bret
1
Eu recebi um erro como esse, como corrigir isso, por favor me ajude !!! Comando "/ usr / bin / python -c" importa setuptools, tokenize; __ arquivo __ = '/ private / tmp / pip-build-AUbwwG / psycopg2 / setup.py'; exec (compile (getattr (tokenize, 'open', abra ) ( file ) .read (). replace ('\ r \ n', '\ n'), file , 'exec')) "install --record /tmp/pip-44Va05-record/install-record.txt --single-version-external-managed --compile "falhou com o código de erro 1 em / private / tmp / pip-build-AUbwwG / psycopg2
vijay
3

No Windows XP, você recebe esse erro se o postgres não estiver instalado ...

Sam Joseph
fonte
você tem certeza que está certo? Instalei o postgres na minha máquina Windows e ainda assim consigo. ?
Saher Ahwal
2
Por que eles não têm isso no site como pré-requisito para o postgres?
Saher Ahwal
3

Instalei o Postgresql92 usando o repositório RedHat / CentOS no site de downloads da PG http://www.postgresql.org/download/linux/redhat/

Para obter o pg_config, tive que adicionar /usr/pgsql-9.2/bin ao PATH.

joedborg
fonte
3

Antes de instalar o psycopg2, você precisará instalar o pacote python-dev.

Se você estiver trabalhando no Linux (e possivelmente em outros sistemas, mas não posso falar por experiência própria), precisará ter certeza de que versão exata do python está executando ao instalar o pacote dev.

Por exemplo, quando eu usei o comando:

sudo apt-get install python3-dev

Ainda encontrei o mesmo erro ao tentar

pip install psycopg2

Como eu estou usando python 3.7, eu precisava usar o comando

sudo apt-get install python3.7-dev

Depois que fiz isso, não tive mais problemas. Obviamente, se você estiver no python versão 3.5, você alterará esse 7 para um 5.

Gino
fonte
2
Esta deve ser a resposta, sudo apt-get install python-x.x-devcorrigiu o problema.
Arbazz Hussain
2

Estou lutando com isso há dias e finalmente descobri como obter o comando "pip install psycopg2" para rodar em um virtualenv no Windows (executando o Cygwin).

Eu estava atingindo o "executável pg_config não encontrado". erro, mas eu já havia baixado e instalado o postgres no Windows. Também foi instalado no Cygwin; executando "what pg_config" no Cygwin forneceu "/ usr / bin / pg_config" e executando "pg_config" produziu resultados sãos - no entanto, a versão instalada com o Cygwin é:

VERSION = PostgreSQL 8.2.11

Isso não funcionará com a versão atual do psycopg2, que parece exigir pelo menos 9.1. Quando adicionei "c: \ Arquivos de Programas \ PostgreSQL \ 9.2 \ bin" ao meu caminho do Windows, o instalador do Cygwin pip conseguiu encontrar a versão correta do PostgreSQL e consegui instalar o módulo com sucesso usando o pip. (Provavelmente, é preferível usar a versão Cygwin do PostgreSQL, pois a versão nativa será executada muito mais rapidamente).

Simétrico
fonte
2

No Fedora 24: para Python 3.x

sudo dnf install postgresql-devel python3-devel

sudo dnf install redhat-rpm-config

Ative seu ambiente virtual:

pip install psycopg2
Rajkumar R
fonte
2

Psycopg2 depende das bibliotecas do Postgres. No Ubuntu, você pode usar:

apt-get install libpq-dev

Então:

pip install psycopg2
Manish Gupta
fonte
Não é uma boa prática misturar pacotes pip e pacotes apt-get.
Wswld
1

Para usuários humildes do Windows, eles precisavam instalar o psycopg2 no link abaixo, basta instalá-lo em qualquer instalação do Python que você configurou. Ele colocará a pasta chamada "psycopg2" na pasta site-packages da sua instalação do python.

Depois disso, basta copiar essa pasta para o diretório de pacotes de sites do seu virtualenv e você não terá problemas.

aqui está o link que você pode encontrar o executável para instalar o psycopg2

http://www.lfd.uci.edu/~gohlke/pythonlibs/

Chris Hawkes
fonte
Eu tentei isso e recebo psycopg2-2.6-cp34-none-win_amd64.whl não é uma roda suportada nesta plataforma.
jayeshkv
1

No OpenSUSE 13.2, isso corrigiu:

sudo zypper in postgresql-devel 
Elliott
fonte
1

Eu poderia instalá-lo em uma máquina Windows e usar o Anaconda / Spyder com python 2.7 através dos seguintes comandos:

 !pip install psycopg2

Em seguida, para estabelecer a conexão com o banco de dados:

 import psycopg2
 conn = psycopg2.connect(dbname='dbname',host='host_name',port='port_number', user='user_name', password='password')
Cristian Muñoz
fonte
Eu consegui isso trabalhando com o banco de dados listado em psql -l, host localhost, porta padrão do banco de dados 5432, o usuário listado \duquando você entra no psql e adivinha a senha.
Harry Moreno
1

Nas distribuições básicas do Arch :

sudo pacman -S python-psycopg2
pip2 install psycopg2  # Use pip or pip3 to python3
iraj jelodari
fonte
0

No Ubuntu, só precisava do pacote dev do postgres:

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

* Testado em um virtualenv

marcanuy
fonte
0

No OSX 10.11.6 (El Capitan)

brew install postgresql
PATH=$PATH:/Library/PostgreSQL/9.4/bin pip install psycopg2
iNoob
fonte
No OSX 10.12.3 (Sierra):brew install postgresql PATH=$PATH:/usr/local/Cellar/postgresql/9.6.2/bin/ pip install psycopg2
ishandutta2007
No OS X 10.14, isso foi muito desafiador. Veja a solução detalhada aqui: stackoverflow.com/a/57014480/2162844
Bisonbleu
0

No OSX com macports:

sudo port install postgresql96
export PATH=/opt/local/lib/postgresql96/bin:$PATH
Palimpseste
fonte
0

Eu estava tendo esse problema, o principal motivo foi com 2 versões iguais instaladas. Um pelo postgres.app e outro pelo HomeBrew.

Se você optar por manter apenas o aplicativo:

brew unlink postgresql
pip3 install psycopg2
Luís De Marchi
fonte
0

No macOS Mojave, verifique se a atualização mais recente do Command Line Tools 10.3 - que funcionou para mim - atualizou com o Software Update, a versão anterior do Command Line Tools no Mojave não funcionou para mim.

Radek
fonte
-1

Tente isso em Gentoo:

emerge dev-libs/libpqxx
tokhi
fonte
-2

No Windows, é assim que funciona
No prompt de comando após a instalação do balão via pip no ambiente virtual, execute este comando

>pip install psycopg2

Verifique isto

Tessaracter
fonte