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 ...

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


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.


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


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


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

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.


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


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/


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.


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

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.


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


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 ...


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

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.


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).


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

2

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

apt-get install libpq-dev

Então:

pip install psycopg2

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/


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 

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')

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


0

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

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

* Testado em um virtualenv


0

No OSX 10.11.6 (El Capitan)

brew install postgresql
PATH=$PATH:/Library/PostgreSQL/9.4/bin pip install psycopg2

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

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

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.


-1

Tente isso em Gentoo:

emerge dev-libs/libpqxx

-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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.