Mac + virtualenv + pip + postgresql = Hata: pg_config yürütülebilir dosyası bulunamadı


92

Bir eğitim için postgres yüklemeye çalışıyordum, ancak pipbana hata veriyor:

pip install psycopg

Aldığım bir hata parçası:

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_configVirtualenv'imde nerede ? Nasıl yapılandırılır? Virtualenv kullanıyorum çünkü sistem genelinde postgres yüklemesini istemiyorum.


Bununla ilgili olarak virtualenv kullanarak nasıl başa çıkılacağına ve brew vb.
İle

Yanıtlar:


106

Mac'te, Postgres.app kullanıyorsanız , pg_config dosyası /Applications/Postgres.app/Contents/Versions/<current_version>/bindizininizdedir. Bu hatayı düzeltmek için sistem yolunuza şu şekilde eklenmesi gerekir:

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

Örneğin, mevcut Postgres.app sürümü 9.5 ise, bu dışa aktarma satırı şöyle olacaktır:

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

Postgres.app'nin (> 9.5?) Daha yeni sürümlerinde, sürüm numarası yerine "en yeni" ifadesini şu şekilde ekleyebilirsiniz:

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

5
sürümün zamanla değişeceğini fark edin; şimdi9.4
andilabs

1
her zaman geçerli kabuğa uygulanması için .bash_profilestandart Terminal'in bash kullanılıyorsa, bu satırı eklemeyi gerektirdiğini unutmayın . EĞER kullanıyorsanız zshbu satırı .zshrcdosyaya ekleyin . Bunların hepsini ana dizininizde bulacaksınız. (sadece ls -la)
andilabs

2
Bu, demleme kullanmaktan yaklaşık bir milyon kat daha kolaydı.
Nate

şimdi 9.5 sürümü! Mevcut sürümü söylemek için yanıtı düzenlemeyi düşünüyor musunuz?
AZhao

6
Eğer yerini alabilir <current_version>ile latestson yüklenen Postgres sürümüne puan. Mayın gibi görünüyor klasörü: ls /Applications/Postgres.app/Contents/Versions/ve o verir9.5/ latest/
Raymond

96

Mac'te çözüm postgresqlşunları yüklemektir :

brew install postgresql

CentOS'ta çözüm postgresql-develşunları kurmaktır :

sudo yum install postgresql-devel

pg_configolduğu postgresql-develpaketin


12
Soru bir "virtualenv" kurulumuyla başlar. Bu durumda demlemenin uygun olduğuna inanmıyorum. Görünüşe göre saf pip solüsyonu olmalı.
john hight

psycopg, C kütüphanesine bir bağlantıdır, bu nedenle C kütüphanesinin kurulu olması gerekir. Yerel C kitaplıklarını virtualenv'lere kurmak mümkün değildir (AFAIK).
Penguin Brian

Postgresql C kitaplıklarını yükledikten sonra, başarısız olan pip yükleme komutunu yeniden çalıştırabilirsiniz (bu, yukarıdaki yanıtla netleştirilmemiştir).
Penguin Brian

33

John Hight'a, OP'nin tam olarak belirtilen virtualenv kullanma ihtiyacını varsayarak, gönderilen yanıtların çoğunun tamamen konu dışı olduğuna tamamen katılıyorum .

Benim için cevap, virtualenv'i etkinleştirirken aşağıdaki komutu istemde çalıştırıyordu:

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

(9.4 bölümünün sürüm anlamına geldiğine ve değişiklik gösterebileceğine dikkat edin)

veya Postgres'in en son kurulu sürümünü kullanmak istiyorsanız :

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

ve sonra:

pip install psycopg2

postgres yüklediğinizi varsayarsak başarılı bir şekilde gider. Ve değilse, o zaman en iyi ve önerilen çözümün kullanmak olduğunu unutmayın: Postgres.app


3
Bu soru için en iyi cevap budur.
Vinod Sharma

3
export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"Postgres'in en son yüklü sürümünü kullanmak istiyorsanız
jaynp

19

Sanal ortamdaki $ PATH değişkeninizin! = Global $ PATH değişkeniniz olduğunu unutmayın. Bunu virtualenv'inizdeki 'echo $ PATH' ile ve ayrıca yeni bir kabukta doğrulayabilirsiniz. Dolayısıyla, PostgreSQL'i sanal ortamınıza benzersiz bir örnek olarak kurmak istemiyorsanız (yapmaya değer bir şey değil, imo), global kurulumunuzun yolunu eklemek için virtualenv içindeki $ PATH değişkenini değiştirmeniz gerekecektir ( eksik pg_config hatasını çözün).

İşte adımlar:

1.) Yeni bir kabukta 'which pg_config' yazın. Bu yola dönecek. Kopyala. Benim durumumda, yol şuna benziyordu: /Applications/Postgres.app/Contents/Versions/9.3/bin

2.) Virtualenv kabuğunuza geri dönün, 'export PATH = / pg_config-yolunuz: $ PATH' yazın.

3.) Sonra, hala virtualenv içinde 'pip install psycopg2'

Her şey plana göre giderse, bu sanal ortamda psycopg2'yi kuracak, ancak kurulum Global PostgreSQL kurulumunuza başvuracaktır. Benim durumumda, bu Global kurulum Postgres.App aracılığıyla kuruldu, dolayısıyla yol. Bu psycopg2 ile çalışma yöntemini tercih ediyorum çünkü bu, veritabanını sadece tanımlanan sanal ortam yerine herhangi bir virtualenv içinde kolayca kullanabileceğim anlamına geliyor.

Umarım bu, buraya gelen herkese yardımcı olur. Google meyve suyu için, işte bu sorunla karşılaştığınızda döndürülen açık (ve belirsiz) hata dili:
Command python setup.py egg_info, hata kodu 1 ile başarısız oldu


2
Yine de, sorunun virtualenv içinde "benzersiz bir örneği" ima ettiğini düşünüyorum. Hâlâ virtualenv içinde pg yüklü olan bir çözüm arayışındayım.
john hight

Sen gerçek şampiyonsun ve günümü kurtardın.
Hafız Siddiq

10

Mac'imde (OSX 10.9) bu sorunu şu şekilde çözebildim:

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

Denediğimde bir CLANG hatası aldım pip install psycopg(bir LLVM 5.1 sorunu ), bu yüzden bunun yerine bu komutla psycopg yüklemem gerekiyordu:

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

Mingyu'nun çözümüne benziyor , ancak paylaşmaya değer olduğunu düşündüğüm yeterince fark var.


2
+1 Benim için çalıştı. MacOS'ta postgres + python geliştirme ortamı kurmak için bir C derleyicisine özel bir bayrak belirtmem gerektiğine inanamıyorum ...
Andomar

1
Soru bir "virtualenv" kurulumuyla başlar. Bu durumda demlemenin uygun olduğuna inanmıyorum. Görünüşe göre saf pip solüsyonu olmalı.
john hight

5

Bu hata, derleme araçları Postgresql kitaplıklarını bulamadığında ortaya çıkar.

Genellikle psycopg2'ye pg_config ikili dosyasını nasıl bulacağını öğretmek gerekir, şunları yapabilirsiniz:

  1. kabuk yolunuza pg_config yolunu ekleyin (/ usr / local / pgsql / bin /)

  2. veya psycopg2 kaynak klasöründeki setup.cfg dosyasını düzenleyin ve pg_config = ile başlayan satırda pg_config için tam yolu sağlayın

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

  • Yukarıdakiler bir örnektir, locate pg_confignerede olduğunu bulmak için yapabilir veya sadece yazabilirsiniz which pg_configve size yolu söylemelidir.

Daha az sıklıkla hata postgresql'in sisteminize yüklenmemesinden kaynaklanır. Öyleyse, postgres indirip oluşturun veya OS X için önceden oluşturulmuş bir psycopg2 ikili dosyasını indirin.


1
Elbette ... ama bunu bir virtualenv içinde nasıl yaparsınız ve sistem çapında bir pg kurulumuna bağımlı kalmazsınız?
john hight

4

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

Kurduktan sonra PostgreSQL 9.5:

brew install postgresql@9.5

Ardından, terminalinizi açın ve çalıştırın:

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

4

postgresql yolunu yapılandırmalısınız:

export PATH=$PATH:/Library/PostgreSQL/11/bin

sonra, gereksinimleri yüklemeniz gerekir:

pip3 install -r requirements

2

virtualenv python paketleri içindir. Bir virtualenv içinde postgres içerebileceğinizi sanmıyorum. Gördüğünüz hata mesajı, muhtemelen henüz postgres yüklememiş olduğunuz içindir. Psycopg2 kurulum betiği postgres dosyalarını (bu durumda pg_config) arıyor ve kurulu olmadığı için bulamıyor. postgres pip veya virtualenv kullanılarak kurulamaz.


1
postgresql'i bir virtualenv'e yüklemek mümkündür ve bu hata genellikle kurulu postgresql'den bağımsız olarak bir yol sorunudur.
l'L'l

1
@HolyMackerel, en alakalı cevap için teşekkürler. Psycopg2 / pg'yi neden virtualenv içinde yükleyemeyeceğiniz konusunda sunabileceğiniz herhangi bir ayrıntı var mı?
john hight

1
postgres'in python ile ilgisi yoktur. Ayrı koşarlar ama birbirleriyle konuşurlar.
Bioto


1

@Bkev ve @andi tarafından sağlanan yanıtlara ek olarak, Postgres.app üzerindeki belgelere göre , Mac'teki bash_profile dosyanıza şunları eklemelisiniz:

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

Sabit kodlanmış sürüm numarası olmadığını unutmayın. Bunu yukarıdaki cevaplara yorum olarak eklemek istedim, ancak bunun için yeterli sayım yok.


1

Postgresql 9.4 kullanıyorsanız, dosya şurada bulunur:

/usr/pgsql-9.4/bin/pg_config

Paketin adı

postgresql94-9.4.9-1PGDG.rhel6.x86_64

PATH'inize pg_config eklemek için aşağıdakileri yapın

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

1

psycopgSürücüyü özel olarak kullanmanız gerekmiyorsa, sürücüye geçin pg8000. Saf Python ve daha az titiz.


0

On Ubuntu I sadece postgres dev paketini gerekli:

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

0

Maden /Library/PostgreSQL/9.4/bin konumunda bulunuyordu

export PATH=$PATH:/Library/PostgreSQL/9.4/bin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.