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


91

チュートリアルのために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私のvirtualenvのどこにありますか?それを構成する方法は?システム全体にpostgresをインストールしたくないので、virtualenvを使用しています。


私は一つだけ、それはvirtualenvのを使用して醸造などを参照してアップ欠落していないに対処する方法を、関連する答えを提供誰だ:stackoverflow.com/questions/20170895/...は
andilabs

回答:


104

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 2015

1
.bash_profile標準のターミナルのbashを使用している場合、現在のシェルに常に適用するには、この行を追加する必要があることに注意してください。使用する場合は、zshこの行を.zshrcファイルに追加します。これはすべて、ホームディレクトリにあります。(ちょうどls -la
andilabs 2015

2
これは、brewを使用するよりも約100万倍簡単でした。
ネイト

今ではバージョン9.5です!現在のバージョンを言うために答えを編集することを検討しますか?
AZhao 2016

6
あなたは置き換えることができます<current_version>latest、最新のインストールPostgresのバージョンにポイントを。私のフォルダは次のようにls /Applications/Postgres.app/Contents/Versions/なります:そしてそれは与える9.5/ latest/
Raymond

96

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

brew install postgresql

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

sudo yum install postgresql-devel

pg_configであるpostgresql-develパッケージ


12
質問の前に「virtualenv」の設定があります。この場合、醸造は適切ではないと思います。それは純粋なピップソリューションでなければならないようです。
ジョンハイト2014

psycopgはCライブラリへのバインディングであるため、Cライブラリをインストールする必要があります。ネイティブCライブラリをvirtualenvsにインストールすることはできません(AFAIK)。
ペンギンブライアン

postgresql Cライブラリをインストールしたら、失敗したpip installコマンドを再実行できます(これは上記の回答では明らかにされていません)。
ペンギンブライアン

33

私は完全に同意するジョンhightの投稿回答のほとんどはOP使用して、正確に指定する必要仮定offtopic完全であることを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を使用するのが最善の推奨ソリューションであることを忘れないでください。


3
これがこの質問に対する最良の答えです。
Vinod Sharma 2015

3
export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"最新のインストール済みバージョンのPostgresを使用する場合
jaynp 2018

19

仮想環境の$ PATH変数!=グローバル$ PATH変数であることを忘れないでください。これは、virtualenvおよび新しいシェルの「echo $ PATH」で確認できます。したがって、PostgreSQLを仮想環境内に一意のインスタンスとしてインストールする場合を除いて(実行する価値はありません、imo)、virtualenv内の$ PATH変数を変更して、グローバルインストールへのパスを含める必要があります(これにより、欠落しているpg_configエラーを解決します)。

手順は次のとおりです。

1.)新しいシェルで、「whichpg_config」と入力します。これにより、パスが返されます。それをコピーします。私の場合、パスは次のようになりました:/Applications/Postgres.app/Contents/Versions/9.3/bin

2.)virtualenvシェルに戻り、「export PATH = / your-path-to-pg_config:$ PATH」と入力します。

3.)次に、virtualenv内で、「pip installpsycopg2」

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

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


2
それでも、この質問は「内部の一意のインスタンス」virtualenvを暗示していると思います。私はまだvirtualenv内にpgをインストールするソリューションを探しています。
ジョンハイト2014

あなたは本当のチャンピオンであり、私の日を救った。
Hafiz Si​​ddiq

10

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

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

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

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

Mingyuのソリューションに似ていますが、共有する価値があると思ったほどの違いがあります。


2
+1私のために働いた。...私はMacOSの上のpostgres + Pythonの開発環境をセットアップするためのCコンパイラにカスタムフラグを指定する必要が信じることができない
Andomar

1
質問の前に「virtualenv」の設定があります。この場合、醸造は適切ではないと思います。それは純粋なピップソリューションでなければならないようです。
ジョンハイト2014

5

このエラーは、ビルドツールが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をダウンロードしてビルドするか、OSX用にビルド済みのpsycopg2バイナリをダウンロードしてください。


1
確かに...しかし、virtualenv内でこれをどのように実行し、システム全体のpgのインストールに依存しないのですか?
ジョンハイト2014

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


1
virtualenvにpostgresqlをインストールすることは可能であり、多くの場合、このエラーは、インストールされているpostgresqlに関係なく、パスの問題です。
l'L'l

1
@HolyMackerel、最も関連性の高い回答をありがとう。virtualenv内にpsycopg2 / pgをインストールできない理由についての詳細はありますか?
ジョンハイト2014

1
postgresはPythonとは何の関係もありません。それらは別々に実行されますが、互いに話します。
bioto 2015

2

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


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

上のUbuntuの私だけ必要なのpostgres 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.