Executável pg_config não encontrado


771

Estou tendo problemas para instalar o psycopg2. Eu recebo o seguinte erro ao tentar pip install psycopg2:

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 in /tmp/pip-build/psycopg2

Mas o problema é que pg_configestá realmente na minha PATH; ele roda sem nenhum problema:

$ which pg_config
/usr/pgsql-9.1/bin/pg_config

Tentei adicionar o caminho pg_config ao setup.cfgarquivo e construí-lo usando os arquivos de origem que baixei do site deles ( http://initd.org/psycopg/ ) e recebo a seguinte mensagem de erro!

Error: Unable to find 'pg_config' file in '/usr/pgsql-9.1/bin/'

Mas é realmente LÁ !!!

Estou perplexo com esses erros. Alguém pode ajudar por favor?

By the way, eu sudotodos os comandos. Também estou no RHEL 5.5.


8
Quando você executa comandos como sudo, $PATHé alterado. Você pode verificar seu $ PATH como root?
Hugo Tavares

1
No meu caso, eu corro ln -s /usr/pgsql-9.1/bin/pg_config /usr/sbin/pg_confige tudo está bem!
precisa saber é o seguinte

Obrigado @ CK.Nguyen você dica realmente funcionou para mim.
pratibha 10/01

Respostas:


766

pg_configestá em postgresql-devel( libpq-devno Debian / Ubuntu, libpq-develem Centos / Cygwin / Babun.)


66
Resolvido após a instalação libpq-devno ubuntu lucid (10.04). Agradeço antecipadamente.
pylover

22
pg_configdo postgress.app está em /Applications/Postgres.app/Contents/Versions/<your version>/bin(Mac OS X)
Tim Daubenschütz

17
Está libpqxx-develno fedora.
robsn

55
sudo apt-get install libpq-devtrabalhou para mim no Ubuntu
Bill Cheatham 10/02

48
no Alpine Linux: apk adicionar postgresql-dev
RJ

385

No Mac OS X, resolvi usando o gerenciador de pacotes homebrew

brew install postgresql

29
Excelente! Isso resolveu o problema para mim, mas os novatos devem estar cientes de que você precisa instalar o gerenciador de pacotes Homebrew primeiro para que o brewcomando funcione.
Seane

Também funcionou para mim, embora eu tenha instalado a instalação após a instalação do pgadmin.
Khanal

8
Isso não instala o banco de dados inteiro?
Zmbq 29/02

3
Eu preciso do extrabrew link postgresql
vincentlcy 10/03/16

1
Para adicionar ao comentário de @ seane, use esta explicação passo a passo para instalar homebrew.
Bruce Wayne

236

Você instalou python-dev? Se você já possui, tente também instalarlibpq-dev

sudo apt-get install libpq-dev python-dev

Do artigo: Como instalar o psycopg2 no virtualenv


No meu computador, instalo apenas o cliente do Postgresql, para que você instale o libpq-dev e o python-dev.
bnPYSse

2
Duvido que python-dev seja necessário.
juanitogan

ele ajudou me.thanks
Arun

4
python3-dev é necessário. Sem ela eu ficoPython.h: No such file or directory
krubo

1
mais uma dependência necessária para isso éapt-get install -y gcc
Anum Sheraz

75

Também no OSX. Instalou o Postgress.app em http://postgresapp.com/, mas teve o mesmo problema.

Eu encontrei pg_configno conteúdo desse aplicativo e acrescentou a dir para $PATH.

Foi às /Applications/Postgres.app/Contents/Versions/latest/bin. Então, isso funcionou: export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH".


3
@GianlucaLodigiani você também pode fazer isso se você não quiser reiniciar o consolePATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH" pip install psycopg2
Bernardo Duarte


38

Isto é o que funcionou para mim no CentOS, primeira instalação:

sudo yum install postgresql postgresql-devel python-devel

No Ubuntu, basta usar os pacotes apt-get equivalentes.

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

E agora inclua o caminho para o seu diretório binário do postgresql com a instalação do pip, isso deve funcionar para Linux baseado em Debain ou RHEL:

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

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


1
No Ubuntu é sudo apt-get install postgresql postgresql-dev python-dev, e isso funcionou para mim.
Modulitos

2
também funciona no Amazon Linux AMI a partir de dezembro de 2016. Verifique também se gccestá instalado e python3-devel.
villasv

obrigado!!! Também funcionou no Fedora 32 Workstation!
Marcelo Gazzola


34

Você deve adicionar os requisitos de python usados ​​no Postgres no Ubuntu. Corre:

sudo apt-get install libpq-dev python-dev

32

Só para resumir, eu também enfrentei exatamente o mesmo problema. Depois de ler muitas postagens de stackoverflow e blogs on-line, a solução final que funcionou para mim é a seguinte:

1) O PostgreSQL (desenvolvimento ou qualquer versão estável) deve ser instalado antes da instalação do psycopg2.

2) O arquivo pg_config (esse arquivo normalmente reside na pasta bin da pasta de instalação do PostgreSQL) O PATH precisava ser explicitamente configurado antes da instalação do psycopg2. No meu caso, a instalação PATH para PostgreSQL é:

/opt/local/lib/postgresql91/

portanto, para definir explicitamente o PATH do arquivo pg_config, digitei o seguinte comando no meu terminal:

PATH=$PATH:/opt/local/lib/postgresql91/bin/

Este comando garante que, ao tentar instalar o psycopg2 com pip, ele encontre o PATH para pg_config automaticamente desta vez.

Também publiquei um erro completo com o trace e sua solução no meu blog, que você pode consultar. É para Mac OS X, mas o problema pg_config PATH é genérico e aplicável ao Linux também.


6
para mim no OS X o caminho ficou assimPATH="/Applications/Postgres.app/Contents/Versions/9.3/bin:$PATH"
andilabs

@andi Sim, o caminho da instalação do Postgres pode ser diferente, mas a receita de instalação do psycopg2 mencionada acima permanece a mesma. Espero que tenha ajudado.
Ali Raza Bhayani

30

sudo apt-get install libpq-dev funciona para mim no Ubuntu 15.4


Se você usa o Ubuntu mais recente, ainda use as instruções de instalação mencionadas acima. Veja pg_config
palik

23

No Linux Mint sudo apt-get install libpq-devfuncionou para mim.


21

Você pode instalar binários pré-compilados em qualquer plataforma com pipou conda:

python -m pip install psycopg2-binary

ou

conda install psycopg2

Esteja ciente de que a página psycopg2-binary pypi recomenda a criação a partir da fonte na produção:

O pacote binário é uma opção prática para desenvolvimento e teste, mas na produção é recomendável usar o pacote criado a partir de fontes

Para usar o pacote criado a partir de fontes, use python -m pip install psycopg2. Esse processo exigirá várias dependências ( documentação ) (ênfase minha):

  • Compilador de corrente alternada .
  • Os arquivos de cabeçalho Python . Eles geralmente são instalados em um pacote como python-dev . Uma mensagem como erro: Python.h: esse arquivo ou diretório não é uma indicação de que os cabeçalhos do Python estão ausentes.
  • Os arquivos de cabeçalho libpq . Eles geralmente são instalados em um pacote como libpq-dev . Se você receber um erro: libpq-fe.h: não existe nenhum arquivo ou diretório desse tipo.
  • O programa pg_config : geralmente é instalado pelo pacote libpq-dev , mas às vezes não está em um diretório PATH. Tê-lo no PATH simplifica bastante a instalação, portanto, tente executar pg_config --version: se ele retornar um erro ou um número de versão inesperado, localize o diretório que contém o pg_config enviado com a versão libpq correta (geralmente / usr / lib / postgresql / XY / bin /) e adicione-o ao PATH: $ export PATH=/usr/lib/postgresql/X.Y/bin/:$PATH Você só precisa do pg_config para compilar o psycopg2, não para seu uso regular.

No Ubuntu, eu precisava instalar a biblioteca libpq-dev primeiro e depois executar o comando pip install novamente:apt install libpq-dev
Benjamin

20

UPDATE /etc/yum.repos.d/CentOS-Base.repo, seções [base] e [updates]
ADD exclude = postgresql *

curl -O http://yum.postgresql.org/9.1/redhat/rhel-6-i386/pgdg-centos91-9.1-4.noarch.rpmr  
rpm -ivh pgdg-centos91-9.1-4.noarch.rpm

yum install postgresql  
yum install postgresql-devel

PATH=$PATH:/usr/pgsql-9.1/bin/

pip install psycopg2

20

Para aqueles que executam o OS X, esta solução funcionou para mim:

1) Instale o Postgres.app:

http://www.postgresql.org/download/macosx/

2) Abra o Terminal e execute este comando, substituindo onde diz {{version}} pelo número da versão do Postgres:

exportar PATH = $ PATH: /Applications/Postgres.app/Contents/Versions / {{version}} / bin

por exemplo

exportar PATH = $ PATH: /Applications/Postgres.app/Contents/Versions/9.4/bin


Ou ligar simbolicamente-lo para a versão mais recentesudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/pg_config /usr/local/bin/pg_config
Subin Sebastian

17

Tente adicioná-lo ao PATH:

PATH=$PATH:/usr/pgsql-9.1/bin/ ./pip install psycopg2

-bash: cd: /usr/pgsql-x.x/bin/: No such file or directory
Pylover # 4/13

@pylover, você precisa usar o caminho correto para o diretório bin do Postgres. Tem certeza de que /usr/pgsql-x.x/bin/está correto?
Marboni

Também seria suficiente adicionar a pasta onde estão todos os pg_arquivos importantes . Para postgres.app, esse caminho no Mac OS X é /Applications/Postgres.app/Contents/Versions/9.3/bin. PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin Atualize sua versão * se uma nova versão for lançada!
Tim Daubenschütz 17/03/2015

Isso funcionou para mim no OS X El Capitan:PATH=$PATH:/usr/local/Cellar/postgresql/9.5.0/bin/
David Hariri

16

A solução de Ali funcionou para mim, mas eu estava tendo problemas para encontrar o local da pasta na lixeira. Uma maneira rápida de encontrar o caminho no Mac OS X é abrir o psql (há um link rápido na barra de menus superior). Isso abrirá uma janela de terminal separada e, na segunda linha, o caminho da instalação do Postgres aparecerá da seguinte forma:

My-MacBook-Pro:~ Me$ /Applications/Postgres93.app/Contents/MacOS/bin/psql ; exit;

Seu arquivo pg_config está nessa pasta bin. Portanto, antes de instalar o psycopg2, defina o caminho do arquivo pg_config:

PATH=$PATH:/Applications/Postgres93.app/Contents/MacOS/bin/

ou para uma versão mais recente:

PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin

Em seguida, instale o psycopg2.


1
Os documentos mais recentes usam o seguinte caminho:/Applications/Postgres.app/Contents/Versions/9.3/bin
jpimentel

Parece se mover. find /usr/local -name 'pg_config'
Praxeolitic

11

Você precisa atualizar seu pip antes de instalar o psycopg2. Use este comando

pip install --upgrade pip

Uma resposta mais detalhada pode ser útil na maioria dos casos.
bkausbk

11

Vou deixar isso aqui para a próxima alma infeliz que não consegue contornar esse problema, apesar de todas as soluções fornecidas. Basta usarsudo pip3 install psycopg2-binary


Isso não funcionou para mim. Apenas brew install postgresqlconsertou.
tsando 11/11/19

Talvez você precise pip install psycopg2-binary: pip -> python2, pip3 -> python3. Mas, desde que você funcione, essa é uma das muitas soluções!
DuDoff 11/11/19

9

Apenas resolvi o problema no Cent OS 7:

export PATH=$PATH:/usr/pgsql-9.5/bin

verifique se a sua versão do PostgreSql corresponde à versão correta acima.


9

No Mac OS X e se você estiver usando o Postgres App ( http://postgresapp.com/ ):

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin

Não há necessidade de especificar a versão do Postgres neste comando. Será sempre apontado para o mais recente.

e fazer

pip install psycopg2

PS: Se as alterações não refletirem, talvez seja necessário reiniciar o prompt de terminal / comando

Fonte




8

No MacOS, a solução mais simples será o link simbólico do binário correto, que está no pacote do Postgres.

sudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/pg_config /usr/local/bin/pg_config

Isso é bastante inofensivo e todos os aplicativos poderão usá-lo em todo o sistema, se necessário.


Funciona para mim, mas não precisava sudo. Obrigado!
John Ottenlips

Funciona para mim mesmo!
Hadnazzar 16/04

5

sudo yum instala o postgresql-devel (centos6X)

pip install psycopg2 == 2.5.2


5

Aqui, para completar o OS X: se você instalar o PostgreSQL a partir do MacPorts, o pg_config estará em /opt/local/lib/postgresql94/bin/pg_config .

Quando você instalou o MacPorts, ele já foi adicionado /opt/local/binao seu PATH.

Portanto, isso resolverá o problema: $ sudo ln -s /opt/local/lib/postgresql94/bin/pg_config /opt/local/bin/pg_config

Agora pip install psycopg2poderá executar pg_configsem problemas.


4

Para aqueles no macOS Catalina que usam o zshshell que também instalaram o aplicativo postgres :

Abra seu ~/.zshrcarquivo e adicione a seguinte linha:

export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"

Depois feche todos os seus terminais, reabra-os e você terá resolvido o seu problema.

Se você não deseja fechar seus terminais, basta entrar source ~/.zshrcno terminal em que deseja continuar trabalhando.


Isso funcionou para mim em Macos e zshshell!
Aditya Rao

4

Para usuários de Mac, estenda sua variável de caminho para incluir o PostgreSQL assim export PATH=$PATH:/Library/PostgreSQL/12/bin.


3

Foi assim que consegui instalar o psycopg2

$ wget http://initd.org/psycopg/tarballs/PSYCOPG-2-5/psycopg2-2.5.3.tar.gz
$ tar -xzf psycopg2-2.5.3.tar.gz
$ cd psycopg2-2.5.3
$ pip install .

2

Tenho certeza de que você experimentou o mesmo "problema" que eu tive, portanto, vou oferecer a solução extremamente fácil ...

No seu caso, o caminho real que você precisa adicionar ao $ PATH (ou como um parâmetro de comando) é:

/usr/pgsql-9.1/bin/pg_config

não

/usr/pgsql-9.1/bin

Por exemplo, se você executar o script python setup.py posteriormente, execute-o assim:

python setup.py build_ext --pg-config /usr/pgsql-9.1/bin/pg_config build

Provavelmente tarde demais, mas ainda assim a solução mais fácil.

ÚLTIMA EDIÇÃO:

Sob teste adicional, descobri que se você adicionar inicialmente o caminho para pg_config no formulário

/usr/pgsql-9.1/bin

(sem / pg_config após ..... / bin) e execute o comando pip install, ele funcionará.

No entanto, se você decidir seguir a indicação para executar o python setup.py, precisará especificar o caminho com / pg_config após ..... / bin, ou seja,

python setup.py build_ext --pg-config /usr/pgsql-9.1/bin/pg_config build

Uma alternativa para adicionar o diretório pgsql / bin ao PATH que usei bastante é o link simbólico /usr/pgsql-9.6/bin/pg_config(ou o que for chamado no sistema) /usr/bin/pg_config- dessa forma, está disponível no PATH que você já possui.
Ralph Bolton

2

para CentOS / RedHat, verifique se /etc/alternatives/pgsql-pg_configé um link simbólico não quebrado

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.