Mac + virtualenv + pip + postgresql = 오류 : pg_config 실행 파일을 찾을 수 없음


92

튜토리얼을 위해 postgres를 설치하려고했지만 pip오류가 발생합니다.

pip install psycopg

내가 얻는 오류의 일부 :

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

pg_config내 가상 환경 은 어디에 있습니까 ? 어떻게 구성합니까? 시스템 전체에 postgres를 설치하지 않기 때문에 virtualenv를 사용하고 있습니다.


나는 virtualenv를 사용하고 brew 등을 놓치지 않고 처리하는 방법에 대한 관련 답변을 제공 한 유일한 사람입니다. 참조 : stackoverflow.com/questions/20170895/…
andilabs

답변:


107

Mac에서 Postgres.app을 사용 하는 경우 pg_config 파일은 /Applications/Postgres.app/Contents/Versions/<current_version>/bin디렉터리에 있습니다. 이 오류를 수정하려면 다음과 같이 시스템 경로에 추가해야합니다.

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/<current_version>/bin

예를 들어 현재 Postgres.app 버전이 9.5 인 경우이 내보내기 행은 다음과 같습니다.

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

최신 버전의 Postgres.app (> 9.5?)에서는 다음과 같이 버전 번호 대신 "최신"을 추가 할 수 있습니다.

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

5
버전은 시간이 지남에 따라 변경됩니다. 지금은9.4
andilabs

1
현재 쉘에 항상 적용되도록하려면 .bash_profile표준 터미널의 bash를 사용 하는 경우이 행을 추가해야합니다 . 사용하는 zsh경우이 줄을 .zshrc파일에 추가 합니다. 이 모든 것은 홈 디렉토리에서 찾을 수 있습니다. (just ls -la)
andilabs 2015

2
이것은 brew를 사용하는 것보다 약 백만 배 더 쉬웠습니다.
Nate

이제 버전 9.5입니다! 현재 버전을 나타 내기 위해 답변을 편집 해보십시오.
AZhao

6
당신은 대체 할 수 <current_version>latest최신 설치 포스트 그레스 버전에 포인트를. 광산 같은 외모 폴더 : ls /Applications/Postgres.app/Contents/Versions/그것은 준다9.5/ latest/
레이몬드

98

Mac에서 해결책은 다음을 설치하는 것입니다 postgresql.

brew install postgresql

CentOS에서 해결책은 다음을 설치하는 것입니다 postgresql-devel.

sudo yum install postgresql-devel

pg_configpostgresql-devel패키지


12
질문은 "virtualenv"설정으로 시작됩니다. 이 경우 양조가 적절하다고 생각하지 않습니다. 순수한 핍 솔루션이어야 할 것 같습니다.
john hight

psycopg는 C 라이브러리에 대한 바인딩이므로 C 라이브러리를 설치해야합니다. 기본 C 라이브러리를 virtualenv에 설치할 수 없습니다 (AFAIK).
Penguin Brian

postgresql C 라이브러리를 설치했으면 실패한 pip install 명령을 다시 실행할 수 있습니다 (위의 답변으로 명확하지 않음).
Penguin Brian

33

나는 대부분의 게시 된 답변이 OP가 virtualenv 사용에 대한 요구를 정확히 지정했다고 가정하고 완전히 주제를 벗어났다는 john hight에 전적으로 동의합니다 .

나를 위해 대답은 virtualenv를 활성화하는 동안 프롬프트에서 다음 명령을 실행했습니다.

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

(파트 9.4는 버전을 나타내며 다를 수 있습니다.)

또는 최신 설치된 Postgres 버전 을 사용하려는 경우 :

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

그리고:

pip install psycopg2

postgres를 설치했다고 가정합니다. 그렇지 않은 경우 가장 좋고 권장되는 솔루션은 Postgres.app 을 사용하는 것임을 기억하십시오.


3
이 질문에 대한 최상의 답변입니다.
Vinod Sharma

3
export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"최신 설치된 포스트 그레스의 버전을 사용하려는 경우
jaynp

19

가상 환경의 $ PATH 변수! = 전역 $ PATH 변수를 잊지 마십시오. virtualenv와 새 셸에서 'echo $ PATH'로이를 확인할 수 있습니다. 따라서 가상 환경 내에서 고유 한 인스턴스로 PostgreSQL을 설치하지 않으려면 (할 가치가 없습니다. imo) virtualenv 내에서 $ PATH 변수를 수정하여 전역 설치 경로를 포함해야합니다. 누락 된 pg_config 오류를 해결하십시오).

단계는 다음과 같습니다.

1.) 새 셸에서 'which pg_config'를 입력합니다. 경로를 반환합니다. 복사하십시오. 제 경우 경로는 다음과 같습니다. /Applications/Postgres.app/Contents/Versions/9.3/bin

2.) virtualenv 셸로 돌아가서 'export PATH = / your-path-to-pg_config : $ PATH'를 입력합니다.

3.) 그런 다음 여전히 virtualenv 내에서 'pip install psycopg2'

모든 것이 계획대로 진행되면 가상 환경 내에 psycopg2가 설치되지만 설치는 Global PostgreSQL 설치를 참조합니다. 필자의 경우이 전역 설치는 Postgres.App을 통해 설치되었으므로 경로입니다. 정의 된 가상 환경 내에서만이 아니라 모든 virtualenv 내에서 쉽게 데이터베이스를 사용할 수 있다는 것을 의미하므로 psycopg2로 작업하는이 방법을 선호합니다.

여기에 도착하는 모든 사람에게 도움이되기를 바랍니다. Google juice의 경우 다음은이 문제가 발생할 때 반환되는 명시적이고 모호한 오류 언어입니다.
Command python setup.py egg_info failed with error code 1


2
그래도이 질문은 virtualenv 내부의 "고유 한 인스턴스"를 의미한다고 생각합니다. 나는 여전히 virtualenv 내에 pg가 설치된 솔루션을 찾고 있습니다.
john hight

당신은 진정한 챔피언이고 내 하루를 구했습니다.
Hafiz Siddiq

10

Mac (OSX 10.9)에서이 문제를 해결하는 방법은 다음과 같습니다.

brew update
brew install --force ossp-uuid
brew install postgresql
pip install psycopg

시도 할 때 CLANG 오류 pip install psycopg( LLVM 5.1 문제 )가 발생하여 대신이 명령을 사용하여 psycopg를 설치해야했습니다.

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install psycopg

Mingyu의 솔루션 과 비슷 하지만 공유 할 가치가 있다고 생각한 차이가 충분합니다.


2
+1 나를 위해 일했습니다. ... 나는 맥 OS에 포스트 그레스 + 파이썬 개발 환경을 설정하기위한 C 컴파일러에 사용자 정의 플래그를 지정해야 믿을 수 없어
Andomar

1
질문은 "virtualenv"설정으로 시작됩니다. 이 경우 양조가 적절하다고 생각하지 않습니다. 순수한 핍 솔루션이어야 할 것 같습니다.
john hight

5

이 오류는 빌드 도구가 Postgresql 라이브러리를 찾을 수 없을 때 발생합니다.

종종 psycopg2에게 pg_config 바이너리를 찾는 방법을 지시해야합니다. 다음을 수행 할 수 있습니다.

  1. 셸 경로 (/ usr / local / pgsql / bin /)에 pg_config에 대한 경로를 추가합니다.

  2. 또는 psycopg2 소스 폴더에서 setup.cfg 파일을 편집하고 pg_config =로 시작하는 줄에 pg_config의 전체 경로를 제공합니다.

pg_config = / usr / local / pgsql / bin / pg_config

  • 위의 예는 locate pg_config위치를 찾거나 단순히 입력 which pg_config하면 경로를 알려줄 수 있습니다.

오류는 시스템에 postgresql이 설치되어 있지 않아 발생하는 경우가 적습니다. 그렇다면 postgres를 다운로드하여 빌드하거나 OS X 용으로 미리 빌드 된 psycopg2 바이너리를 다운로드하십시오.


1
물론 ...하지만 어떻게 virtualenv 내에서 이것을 수행하고 시스템 전체의 pg 설치에 의존하지 않습니까?
john hight

4

대한 OS X El Capitan (10.11.6)+ brew+ virtualenv+ PostgreSQL 9.5:

설치 후 PostgreSQL 9.5:

brew install postgresql@9.5

그런 다음 터미널을 열고 다음을 실행하십시오.

export PATH=$PATH:/usr/local/opt/postgresql\@9.5/bin/
pip install psycopg2


2

virtualenv는 파이썬 패키지 용입니다. 나는 당신이 virtualenv 안에 postgres를 포함시킬 수 없을 것이라고 생각합니다. 표시되는 오류 메시지는 아마도 아직 postgres를 설치하지 않았기 때문일 것입니다. psycopg2 설치 스크립트는 postgres 파일 (이 경우 pg_config)을 찾고 있지만 설치되지 않았기 때문에 찾지 못합니다. postgres는 pip 또는 virtualenv를 사용하여 설치할 수 없습니다.


1
virtualenv에 postgresql을 설치할 수 있으며 종종이 오류는 설치되는 postgresql에 관계없이 경로 문제입니다.
l' L' l

1
@HolyMackerel, 가장 관련성이 높은 답변에 감사드립니다. virtualenv 내에 psycopg2 / pg를 설치할 수없는 이유에 대한 세부 정보가 있습니까?
john hight

1
postgres는 파이썬과 관련이 없습니다. 그들은 따로 달리지 만 서로 이야기합니다.
Bioto


1

Postgres.app 의 문서 에 따르면 @bkev 및 @andi에서 제공하는 답변 외에도 Mac의 bash_profile에 다음을 추가해야합니다.

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

하드 코딩 된 버전 번호가 없습니다. 나는 이것을 위의 답변에 대한 주석으로 추가하고 싶었지만 이에 대한 충분한 담당자가 없습니다.


1

postgresql 9.4를 사용하는 경우 파일은 다음 위치에 있습니다.

/usr/pgsql-9.4/bin/pg_config

패키지 이름은

postgresql94-9.4.9-1PGDG.rhel6.x86_64

pg_config를 PATH에 추가하려면 다음을 수행하십시오.

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

1

psycopg특별히 드라이버 를 사용할 필요가 없다면 드라이버로 전환하십시오 pg8000. 순수한 Python이며 덜 까다 롭습니다.


0

우분투 나는 단지 포스트 그레스 dev에 패키지를 필요 :

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

0

광산은 /Library/PostgreSQL/9.4/bin에 있습니다.

export PATH=$PATH:/Library/PostgreSQL/9.4/bin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.