executable pg_config tidak ditemukan

771

Saya kesulitan menginstal psycopg2. Saya mendapatkan kesalahan berikut ketika saya mencoba untuk 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

Tapi masalahnya ada pg_configdi tangan saya PATH; ini berjalan tanpa masalah:

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

Saya mencoba menambahkan path pg_config ke setup.cfgfile dan membangunnya menggunakan file sumber yang saya unduh dari situs web mereka ( http://initd.org/psycopg/ ) dan saya mendapatkan pesan kesalahan berikut!

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

Tapi itu sebenarnya ADA !!!

Saya bingung dengan kesalahan ini. Apakah ada yang bisa membantu?

By the way, saya sudosemua perintah. Saya juga di RHEL 5.5.

pengguna1448207
sumber
8
Ketika Anda menjalankan perintah sebagai sudo, $PATHdiubah. Bisakah Anda memeriksa ulang $ PATH Anda sebagai root?
Hugo Tavares
1
Dalam kasus saya, saya berlari ln -s /usr/pgsql-9.1/bin/pg_config /usr/sbin/pg_configdan semuanya baik-baik saja!
CK.Nguyen
Terima kasih @ CK.Nguyen tip Anda benar-benar bekerja untuk saya.
pratibha

Jawaban:

766

pg_configada di postgresql-devel( libpq-devdi Debian / Ubuntu, libpq-develdi Centos / Cygwin / Babun.)

Tilman Baumann
sumber
66
Dipecahkan setelah menginstal libpq-devdi ubuntu jernih (10,04). Terima kasih sebelumnya.
pylover
22
pg_configdari postgress.app berada di /Applications/Postgres.app/Contents/Versions/<your version>/bin(Mac OS X)
Tim Daubenschütz
17
Ada libpqxx-develdi fedora.
robsn
55
sudo apt-get install libpq-devbekerja untuk saya di Ubuntu
Bill Cheatham
48
di Alpine Linux: apk tambahkan postgresql-dev
RJ
385

Di Mac OS X, saya menyelesaikannya menggunakan manajer paket homebrew

brew install postgresql
azalea
sumber
29
Luar biasa! Ini memecahkan masalah bagi saya, tetapi pemula harus sadar bahwa Anda perlu menginstal manajer paket Homebrew terlebih dahulu agar brewperintah itu berfungsi.
seane
Bekerja untuk saya juga, meskipun saya menginstal brew setelah pgadmin menginstal.
Khanal
8
Bukankah itu menginstal seluruh basis data?
zmbq
3
Saya perlu ekstrabrew link postgresql
vincentlcy
1
Untuk menambahkan komentar @ seane, gunakan langkah - langkah ini untuk menginstal homebrew.
Bruce Wayne
236

Sudahkah Anda menginstal python-dev? Jika sudah, coba juga installibpq-dev

sudo apt-get install libpq-dev python-dev

Dari artikel: Cara menginstal psycopg2 di bawah virtualenv

thegauraw
sumber
Di komputer saya, saya hanya menginstal klien Postgresql, Jadi Anda harus menginstal libpq-dev dan python-dev.
bnPYSse
2
Diragukan bahwa python-dev diperlukan.
juanitogan
itu membantu saya. Terima kasih
Arun
4
python3-dev dibutuhkan. Tanpa itu saya dapatkanPython.h: No such file or directory
krubo
1
satu lagi ketergantungan yang diperlukan untuk ini adalahapt-get install -y gcc
Anum Sheraz
75

Juga di OSX. Menginstal Postgress.app dari http://postgresapp.com/ tetapi memiliki masalah yang sama.

Saya menemukan konten pg_configaplikasi itu dan menambahkan dir ke $PATH.

Itu di /Applications/Postgres.app/Contents/Versions/latest/bin. Jadi ini bekerja: export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH".

Tayler
sumber
3
@GianlucaLodigiani Anda juga dapat melakukan ini jika Anda tidak ingin me-restart konsolPATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH" pip install psycopg2
Bernardo Duarte
45

Pada alpine, perpustakaan yang berisi pg_configadalah postgresql-dev. Untuk menginstal, jalankan:

apk add postgresql-dev
rkoval
sumber
38

Inilah yang bekerja untuk saya di CentOS, instal dulu:

sudo yum install postgresql postgresql-devel python-devel

Di Ubuntu cukup gunakan paket apt-get equivilent.

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

Dan sekarang sertakan path ke dir biner postgresql Anda dengan instal pip, ini akan berfungsi untuk Linux berbasis Debain atau RHEL:

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

Pastikan untuk memasukkan jalur yang benar. Itu saja :)

radtek
sumber
1
Di Ubuntu itu sudo apt-get install postgresql postgresql-dev python-dev, dan ini berhasil untuk saya.
modulitos
2
juga bekerja di Amazon Linux AMI pada Desember 2016. Juga pastikan gccsudah terinstal dan python3-devel.
villasv
Terima kasih!!! Itu bekerja di Fedora 32 Workstation juga!
Marcelo Gazzola
37
apt-get build-dep python-psycopg2
matiu
sumber
34

Anda harus menambahkan persyaratan python yang digunakan dalam Postgres di Ubuntu. Lari:

sudo apt-get install libpq-dev python-dev
Kishore Bhosale
sumber
32

Singkatnya, saya juga menghadapi masalah yang sama persis. Setelah membaca banyak posting stackoverflow dan blog online, solusi terakhir yang bekerja untuk saya adalah ini:

1) PostgreSQL (pengembangan atau versi stabil apa pun) harus diinstal sebelum menginstal psycopg2.

2) File pg_config (file ini biasanya berada di folder bin dari folder instalasi PostgreSQL) PATH harus secara eksplisit diatur sebelum menginstal psycopg2. Dalam kasus saya, PATH instalasi untuk PostgreSQL adalah:

/opt/local/lib/postgresql91/

jadi untuk mengatur PATH file pg_config secara eksplisit, saya memasukkan perintah berikut di terminal saya:

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

Perintah ini memastikan bahwa ketika Anda mencoba memasang install psycopg2, kali ini akan menemukan PATH ke pg_config secara otomatis.

Saya juga telah memposting kesalahan lengkap dengan jejak dan solusinya di blog saya yang mungkin ingin Anda rujuk. Ini untuk Mac OS X tetapi masalah PATH pg_config bersifat generik dan juga berlaku untuk Linux.

Ali Raza Bhayani
sumber
6
bagi saya di OS X jalan tampak seperti iniPATH="/Applications/Postgres.app/Contents/Versions/9.3/bin:$PATH"
andilabs
@andi Ya, jalur instalasi Postgres mungkin berbeda tetapi resep instalasi untuk psycopg2 yang saya sebutkan di atas tetap sama. Semoga ini bisa membantu.
Ali Raza Bhayani
30

sudo apt-get install libpq-dev bekerja untuk saya di Ubuntu 15.4

novasaint
sumber
Jika Anda menggunakan Ubuntu yang lebih baru, masih menggunakan instruksi instalasi yang disebutkan di atas. Lihat pg_config
palik
23

Di Linux Mint sudo apt-get install libpq-devbekerja untuk saya.

mreator
sumber
21

Anda dapat menginstal binari yang telah dikompilasi sebelumnya pada platform apa pun dengan pipatau conda:

python -m pip install psycopg2-binary

atau

conda install psycopg2

Harap diperhatikan bahwa halaman pypi psycopg2-binary merekomendasikan bangunan dari sumber dalam produksi:

Paket biner adalah pilihan praktis untuk pengembangan dan pengujian tetapi dalam produksi disarankan untuk menggunakan paket yang dibangun dari sumber

Untuk menggunakan paket yang dibangun dari sumber, gunakan python -m pip install psycopg2. Proses itu akan memerlukan beberapa dependensi ( dokumentasi ) (penekanan tambang):

  • Kompiler AC .
  • The Python file header . Mereka biasanya diinstal dalam paket seperti python-dev . Pesan seperti kesalahan: Python.h: Tidak ada file atau direktori tersebut merupakan indikasi bahwa header Python hilang.
  • The file libpq sundulan . Mereka biasanya diinstal dalam paket seperti libpq-dev . Jika Anda mendapatkan kesalahan: libpq-fe.h: Tidak ada file atau direktori yang Anda lewatkan.
  • Program pg_config : biasanya diinstal oleh paket libpq-dev tetapi kadang-kadang tidak ada dalam direktori PATH. Setelah itu di PATH sangat merampingkan instalasi, jadi coba jalankan pg_config --versi: jika ia mengembalikan kesalahan atau nomor versi yang tidak terduga kemudian cari direktori yang berisi pg_config yang dikirimkan dengan versi libpq yang tepat (biasanya / usr / lib / postgresql / XY / bin /) dan tambahkan ke PATH: $ export PATH=/usr/lib/postgresql/X.Y/bin/:$PATH Anda hanya perlu pg_config untuk mengkompilasi psycopg2, bukan untuk penggunaan regulernya.
jakub
sumber
Di Ubuntu, saya perlu menginstal perpustakaan libpq-dev terlebih dahulu dan kemudian jalankan lagi perintah install pip:apt install libpq-dev
Benjamin
20

UPDATE /etc/yum.repos.d/CentOS-Base.repo, bagian [basis] dan [pembaruan]
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
Mayank
sumber
20

Bagi mereka yang menjalankan OS X, solusi ini bekerja untuk saya:

1) Instal Postgres.app:

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

2) Kemudian buka Terminal dan jalankan perintah ini, ganti di mana dikatakan {{version}} dengan nomor versi Postgres:

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

misalnya

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

Milo
sumber
Atau simlink ke versi terbarusudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/pg_config /usr/local/bin/pg_config
Subin Sebastian
17

Coba tambahkan ke PATH:

PATH=$PATH:/usr/pgsql-9.1/bin/ ./pip install psycopg2
Marboni
sumber
-bash: cd: /usr/pgsql-x.x/bin/: No such file or directory
pylover
@pylover, Anda perlu menggunakan jalur yang benar ke direktori Postgres bin Anda. Apakah Anda yakin itu /usr/pgsql-x.x/bin/benar?
Marboni
Itu juga akan cukup hanya dengan menambahkan folder tempat semua pg_file penting tinggal. Untuk postgres.app jalur ini di Mac OS X adalah /Applications/Postgres.app/Contents/Versions/9.3/bin. PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin Perbarui versi Anda * jika versi baru dirilis!
Tim Daubenschütz
Ini bekerja untuk saya di OS X El Capitan:PATH=$PATH:/usr/local/Cellar/postgresql/9.5.0/bin/
David Hariri
16

Solusi Ali bekerja untuk saya tetapi saya kesulitan menemukan lokasi folder bin. Cara cepat untuk menemukan jalur di Mac OS X adalah membuka psql (ada tautan cepat di bilah menu atas). Ini akan membuka jendela terminal yang terpisah dan pada baris kedua jalur instalasi Postgres Anda akan muncul seperti ini:

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

File pg_config Anda ada di folder bin itu. Karena itu, sebelum menginstal psycopg2 setel path file pg_config:

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

atau untuk versi yang lebih baru:

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

Kemudian instal psycopg2.

pengguna2498172
sumber
1
Dokumen yang lebih baru menggunakan jalur berikut:/Applications/Postgres.app/Contents/Versions/9.3/bin
jpimentel
Tampaknya bergerak. find /usr/local -name 'pg_config'
Praxeolitic
11

Anda perlu memutakhirkan pip Anda sebelum menginstal psycopg2. Gunakan perintah ini

pip install --upgrade pip
Aswin
sumber
Jawaban yang lebih terperinci dapat membantu dalam banyak kasus.
bkausbk
11

Saya akan meninggalkan ini di sini untuk jiwa malang berikutnya yang tidak dapat menyelesaikan masalah ini terlepas dari semua solusi yang disediakan. Cukup gunakansudo pip3 install psycopg2-binary

DuDoff
sumber
Ini tidak berhasil untuk saya. Hanya brew install postgresqlmemperbaikinya.
tsando
Anda mungkin harus melakukannya pip install psycopg2-binaryuntuk saya: pip -> python2, pip3 -> python3. Tetapi selama Anda berhasil, itu adalah salah satu dari banyak solusi!
DuDoff
9

Baru saja menyelesaikan masalah di Cent OS 7 dengan:

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

pastikan versi PostgreSql Anda cocok dengan versi di atas.

Morfat Mosoti
sumber
9

Di Mac OS X dan Jika Anda menggunakan Postgres App ( http://postgresapp.com/ ):

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

Tidak perlu menentukan versi Postgres dalam perintah ini. Itu akan selalu menunjuk ke yang terbaru.

dan lakukan

pip install psycopg2

PS: Jika Perubahan tidak mencerminkan Anda mungkin perlu me-restart Terminal / Command prompt

Sumber

Dinesh Sunny
sumber
9

Instalasi python-psycopg2 menyelesaikannya untuk saya di Arch Linux:

pacman -S python-psycopg2
Ronan Boiteau
sumber
Bagaimana dengan Windows?
Prathamesh More
2
@RathameshMore Saya tidak tahu, saya tidak menggunakan Windows. Sudahkah Anda mencoba jawaban ini: stackoverflow.com/a/25767749/5660517 ?
Ronan Boiteau
8

Pada MacOS, solusi paling sederhana adalah symlink biner yang benar, yang berada di bawah paket Postgres.

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

Ini cukup tidak berbahaya, dan semua aplikasi akan dapat menggunakannya secara luas, jika diperlukan.

Subin Sebastian
sumber
Bekerja untuk saya, tidak harus sudo. Terima kasih!
John Ottenlips
Benar-benar bekerja untuk saya!
Hadnazzar
5

sudo yum instal postgresql-devel (centos6X)

pip instal psycopg2 == 2.5.2

pengguna2387567
sumber
5

Di sini, untuk kelengkapan OS X: jika Anda menginstal PostgreSQL dari MacPorts, pg_config akan berada di /opt/local/lib/postgresql94/bin/pg_config .

Ketika Anda menginstal MacPorts, itu sudah ditambahkan /opt/local/bin ke PATH Anda.

Jadi, ini akan memperbaiki masalah: $ sudo ln -s /opt/local/lib/postgresql94/bin/pg_config /opt/local/bin/pg_config

Sekarang pip install psycopg2akan dapat berjalan pg_configtanpa masalah.

Gabi
sumber
4

Untuk mereka yang menggunakan MacOS Catalina menggunakan zshshell yang juga telah menginstal aplikasi postgres :

Buka ~/.zshrcfile Anda , dan tambahkan baris berikut:

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

Kemudian tutup semua terminal Anda, buka kembali, dan Anda akan menyelesaikan masalah Anda.

Jika Anda tidak ingin menutup terminal Anda, cukup masukkan source ~/.zshrcterminal apa pun yang ingin Anda teruskan bekerja.

qarthandso
sumber
Ini bekerja untuk saya di Macos and zshshell!
Aditya Rao
4

Untuk pengguna mac, perluas variabel path Anda untuk memasukkan PostgreSQL seperti ini export PATH=$PATH:/Library/PostgreSQL/12/bin.

Uzzi Emuchay
sumber
3

Ini adalah bagaimana saya berhasil menginstal 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 .
Tomg
sumber
2

Saya cukup yakin Anda pernah mengalami "masalah" yang sama dengan yang saya lakukan, karena itu saya akan menawarkan solusi yang sangat mudah ...

Dalam kasus Anda, jalur aktual yang perlu Anda tambahkan ke $ PATH (atau sebagai param perintah) adalah:

/usr/pgsql-9.1/bin/pg_config

tidak

/usr/pgsql-9.1/bin

Misalnya jika Anda menjalankan skrip setup.py python setelah itu, Anda akan menjalankannya seperti ini:

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

Mungkin sudah terlambat, tetapi masih merupakan solusi termudah.

EDIT KEMUDIAN:

Di bawah pengujian lebih lanjut saya menemukan bahwa jika Anda awalnya menambahkan path ke pg_config dalam formulir

/usr/pgsql-9.1/bin

(tanpa / pg_config setelah ..... / bin) dan jalankan perintah install pip, itu akan berfungsi.

Namun, jika Anda kemudian memutuskan untuk mengikuti indikasi untuk menjalankan python setup.py, Anda harus menentukan path dengan / pg_config setelah ..... / bin, yaitu

python setup.py build_ext --pg-config /usr/pgsql-9.1/bin/pg_config build
BogdanSorlea
sumber
Alternatif untuk menambahkan direktori pgsql / bin ke PATH yang saya gunakan sedikit adil adalah dengan symlink /usr/pgsql-9.6/bin/pg_config(atau apa pun namanya pada sistem Anda) ke /usr/bin/pg_config- dengan cara itu tersedia di PATH yang sudah Anda miliki.
Ralph Bolton
2

untuk CentOS / RedHat pastikan itu /etc/alternatives/pgsql-pg_configadalah symlink yang tidak rusak

Hedde van der Heide
sumber