web-dev-qa-db-ja.com

Mac + virtualenv + pip + postgresql =エラー:pg_config実行可能ファイルが見つかりません

チュートリアル用に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'.

Virtualenvのpg_configはどこにありますか?構成方法postgresをシステム全体にインストールしたくないため、virtualenvを使用しています。

72
Karan Goel

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
87
bkev

Macでは、解決策はpostgresqlをインストールすることです。

brew install postgresql

CentOSでは、解決策はpostgresql-develをインストールすることです。

Sudo yum install postgresql-devel

pg_configpostgresql-develパッケージにあります

82
Mingyu

私は john hight に完全に同意します。投稿された回答のほとんどは、OPがvirtualenvを使用する必要性を正確に指定していると仮定すると完全にオフトピックです。

私にとっての答えは、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

28
andilabs

仮想環境での$ 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がインストールされますが、インストールはグローバルPostgreSQLインストールを参照します。私の場合、このグローバルインストールはPostgres.App、つまりパスを介してインストールされました。定義された仮想環境内だけでなく、任意のvirtualenv内でデータベースを簡単に使用できることを意味するため、psycopg2を使用するこの方法を好みます。

これがここに到着する人を助けることを願っています。 Googleジュースの場合、この問題に遭遇したときに返される明示的な(あいまいな)エラー言語は次のとおりです。
コマンドpython setup.py Egg_infoはエラーコード1で失敗しました

17
Kevin Dalias

Mac(OSX 10.9)でこの問題を解決できた方法は次のとおりです。

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

pip install psycopgLLVM 5.1 issue )を試したときにCLANGエラーが発生したため、代わりにこのコマンドでpsycopgをインストールする必要がありました。

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

Mingyu's ソリューションに似ていますが、共有する価値があると思った十分な違いがあります。

10
mrgnw

このエラーは、ビルドツールがPostgresqlライブラリを見つけられない場合に発生します。

多くの場合、pg_configバイナリの検索方法をpsycopg2に指示する必要があります。

  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バイナリをダウンロードします。

5
l'L'l

OS X El Captain (10.11.6) + brew + virtualenv + PostgreSQL 9.5の場合:

PostgreSQL 9.5をインストールした後:

brew install [email protected]

ターミナルを開いて実行します:

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

Windowsでは、 http://www.enterprisedb.com/products-services-training/pgdownload#windows からpostgresを手動でインストールしました。その後、同じコマンドが機能します。

2
Max

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
Ahmed

Postgres.appの documentation によると、@ bkevと@andiによって提供される回答に加えて、Macのbash_profileに次を追加する必要があります。

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

ハードコードされたバージョン番号はないことに注意してください。上記の回答のコメントとしてこれを追加したかったのですが、これに対する十分な担当者がいません。

1

virtualenvはpythonパッケージ用です。 virtualenv内にpostgresを含めることができるとは思わない。表示されているエラーメッセージは、おそらくpostgresをまだインストールしていないためです。 psycopg2インストールスクリプトは、postgresファイル(この場合はpg_config)を探していますが、インストールされていないため、それらを見つけられません。 postgresは、pipまたはvirtualenvを使用してインストールできません。

1
Holy Mackerel

psycopgドライバーを特に使用する必要がない場合は、pg8000ドライバーに切り替えます。それは純粋なPythonであり、あまり面倒ではありません。

0
Chris Johnson

鉱山は/Library/PostgreSQL/9.4/binにありました

export PATH=$PATH:/Library/PostgreSQL/9.4/bin
0
InternetFett

buntでpostgres devパッケージが必要になりました:

Sudo apt-get install postgresql-server-dev-all
0
marcanuy