ไม่พบไฟล์ปฏิบัติการที่ pg_config


769

ฉันมีปัญหาในการติดตั้ง psycopg2 ฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อพยายาม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

แต่ปัญหาคือpg_configเป็นจริงในของฉันPATH; มันทำงานได้โดยไม่มีปัญหาใด ๆ :

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

ฉันพยายามเพิ่มเส้นทาง pg_config ไปยังsetup.cfgไฟล์และสร้างโดยใช้ไฟล์ต้นฉบับที่ฉันดาวน์โหลดจากเว็บไซต์ของพวกเขา ( http://initd.org/psycopg/ ) และฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้!

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

แต่ที่จริงแล้วมี !!!

ฉันงงกับข้อผิดพลาดเหล่านี้ ใครช่วยได้บ้าง

โดยวิธีการที่ฉันsudoคำสั่งทั้งหมด นอกจากนี้ฉันอยู่ใน RHEL 5.5


8
เมื่อคุณเรียกใช้คำสั่งเป็นsudo, $PATHมีการเปลี่ยนแปลง คุณช่วยตรวจสอบ $ PATH ของคุณอีกครั้งได้ไหม
Hugo Tavares

1
ในกรณีของฉันฉันวิ่งln -s /usr/pgsql-9.1/bin/pg_config /usr/sbin/pg_configและทุกอย่างโอเค!
CK.Nguyen

ขอบคุณ @ CK.Nguyen เคล็ดลับของคุณใช้ได้กับฉันจริงๆ
pratibha

คำตอบ:


763

pg_configอยู่ในpostgresql-devel( libpq-devใน Debian / Ubuntu libpq-develบน Centos / Cygwin / Babun)


66
แก้ไขได้หลังจากติดตั้งlibpq-devบน Ubuntu lucid (10.04) ขอบคุณล่วงหน้า.
pylover

22
pg_configof postgress.app อยู่ที่/Applications/Postgres.app/Contents/Versions/<your version>/bin(Mac OS X)
Tim Daubenschütz

17
มันlibpqxx-develอยู่ใน fedora
robsn

54
sudo apt-get install libpq-devทำงานให้ฉันใน Ubuntu
Bill Cheatham

48
บน Alpine Linux: apk เพิ่ม postgresql-dev
RJ

384

ใน Mac OS X ฉันแก้ไขได้โดยใช้ตัวจัดการแพ็คเกจhomebrew

brew install postgresql

29
ยอดเยี่ยม วิธีนี้แก้ไขปัญหาให้ฉันได้ แต่มือใหม่ควรระวังว่าคุณต้องติดตั้งHomebrew package manager ก่อนเพื่อให้brewคำสั่งทำงานได้
seane

ทำงานให้ฉันด้วยเช่นกันแม้ว่าฉันจะติดตั้ง Brew หลังจากติดตั้ง pgadmin
Khanal

8
ไม่ได้ติดตั้งฐานข้อมูลทั้งหมดหรือไม่
zmbq

3
ฉันต้องการสิ่งพิเศษbrew link postgresql
vincentlcy

1
เพื่อเพิ่มความคิดเห็นของ @ Seane ใช้คำแนะนำแบบนี้homebrewในการติดตั้ง
Bruce Wayne

236

คุณติดตั้งแล้วpython-devหรือยัง หากคุณมีแล้วลองติดตั้งlibpq-dev

sudo apt-get install libpq-dev python-dev

จากบทความ: วิธีการติดตั้ง psycopg2 ภายใต้ virtualenv


ในคอมพิวเตอร์ของฉันฉันเพียงติดตั้งไคลเอนต์ของ Postgresql ดังนั้นคุณต้องติดตั้ง libpq-dev และ python-dev
bnPYSse

2
สงสัยว่าจำเป็นต้องใช้ python-dev
juanitogan

มันช่วยฉันขอบคุณ
Arun

4
จำเป็นต้องใช้ python3-dev โดยไม่ได้รับฉันPython.h: No such file or directory
krubo

1
ต้องมีการพึ่งพาอีกหนึ่งรายการสำหรับนี้คือapt-get install -y gcc
Anum Sheraz

74

นอกจากนี้บน OSX ติดตั้ง Postgress.app จากhttp://postgresapp.com/แต่มีปัญหาเดียวกัน

ผมพบว่าpg_configในเนื้อหาของแอปที่และเพิ่ม dir $PATHไป

/Applications/Postgres.app/Contents/Versions/latest/binมันอยู่ที่ ดังนั้นสิ่งนี้ได้ผล: export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH".


3
@GianlucaLodigiani คุณสามารถทำสิ่งนี้ได้หากคุณไม่ต้องการรีสตาร์ทคอนโซลPATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH" pip install psycopg2
## Bernardo Duarte


38

นี่คือสิ่งที่ใช้ได้กับฉันบน CentOS ติดตั้งครั้งแรก:

sudo yum install postgresql postgresql-devel python-devel

บน Ubuntu เพียงใช้แพ็คเกจ apt-get ที่ไม่เหมือนใคร

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

และตอนนี้ได้รวมเส้นทางไปยังแท่นติดตั้ง postgresql ของคุณด้วยการติดตั้ง pip ของคุณสิ่งนี้ควรใช้ได้กับ Linux ที่ใช้ Debain หรือ RHEL

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

ตรวจสอบให้แน่ใจว่าได้รวมเส้นทางที่ถูกต้อง นั่นคือทั้งหมด :)


1
ใน Ubuntu มันใช้sudo apt-get install postgresql postgresql-dev python-devงานได้และนี่ก็ใช้ได้สำหรับฉัน
modulitos

2
ใช้ได้กับ Amazon Linux AMI ณ เดือนธันวาคม 2559 gccและติดตั้งและ python3-devel ด้วย
villasv

ขอบคุณ!!! มันทำงานบน Fedora 32 Workstation เช่นกัน!
Marcelo Gazzola


34

คุณควรเพิ่มข้อกำหนดของหลามที่ใช้ใน Postgres บน Ubuntu วิ่ง:

sudo apt-get install libpq-dev python-dev

32

สรุปแล้วฉันก็ประสบปัญหาเดียวกัน หลังจากอ่านโพสต์สแต็คโอเวอร์โฟลว์และบล็อกออนไลน์จำนวนมากทางออกสุดท้ายที่ได้ผลสำหรับฉันก็คือ:

1) PostgreSQL (การพัฒนาหรือเวอร์ชั่นที่เสถียร) ควรทำการติดตั้งก่อนทำการติดตั้ง psycopg2

2) ไฟล์ pg_config (ปกติไฟล์นี้จะอยู่ในโฟลเดอร์ bin ของโฟลเดอร์การติดตั้ง PostgreSQL) PATH จะต้องทำการติดตั้งอย่างชัดเจนก่อนทำการติดตั้ง psycopg2 ในกรณีของฉันเส้นทางการติดตั้งสำหรับ PostgreSQL คือ:

/opt/local/lib/postgresql91/

ดังนั้นในการตั้งค่า PATH ของไฟล์ pg_config อย่างชัดเจนฉันได้ป้อนคำสั่งต่อไปนี้ในเทอร์มินัลของฉัน:

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

คำสั่งนี้ทำให้มั่นใจได้ว่าเมื่อคุณพยายาม pip ติดตั้ง psycopg2 มันจะหา PATH to pg_config โดยอัตโนมัติในครั้งนี้

ฉันได้โพสต์ข้อผิดพลาดแบบเต็มพร้อมร่องรอยและวิธีแก้ไขในบล็อกของฉันซึ่งคุณอาจต้องการอ้างอิง มันสำหรับ Mac OS X แต่ปัญหา pg_config PATH นั้นเป็นเรื่องทั่วไปและใช้ได้กับ Linux เช่นกัน


6
สำหรับฉันใน OS X เส้นทางดูเหมือนว่านี้PATH="/Applications/Postgres.app/Contents/Versions/9.3/bin:$PATH"
andilabs

@ และใช่เส้นทางการติดตั้งของ Postgres อาจแตกต่างกัน แต่สูตรการติดตั้งสำหรับ psycopg2 ที่ฉันกล่าวถึงข้างต้นยังคงเหมือนเดิม หวังว่ามันจะช่วย
Ali Raza Bhayani

30

sudo apt-get install libpq-dev ทำงานได้สำหรับฉันบน Ubuntu 15.4


หากคุณใช้ Ubuntu รุ่นใหม่ยังคงใช้คำสั่งการติดตั้งข้างต้น ดูpg_config
palik


21

คุณสามารถติดตั้งไบนารีที่รวบรวมไว้ล่วงหน้าบนแพลตฟอร์มใด ๆ ด้วยpipหรือconda:

python -m pip install psycopg2-binary

หรือ

conda install psycopg2

โปรดทราบว่าหน้าpsycopg2-binary pypiแนะนำการสร้างจากแหล่งที่มาในการผลิต:

แพ็คเกจไบนารีเป็นตัวเลือกที่ใช้งานได้จริงสำหรับการพัฒนาและทดสอบ แต่ในการผลิตขอแนะนำให้ใช้แพ็คเกจที่สร้างจากแหล่งที่มา

python -m pip install psycopg2เมื่อต้องการใช้แพคเกจที่สร้างขึ้นจากแหล่งข้อมูลที่ใช้ กระบวนการนั้นจะต้องมีการอ้างอิงหลายอย่าง ( เอกสาร ) (เหมืองเน้น):

  • คอมไพเลอร์ AC
  • ไฟล์ส่วนหัวงูหลาม พวกเขามักจะมีการติดตั้งในแพคเกจเช่นหลาม dev ข้อความเช่นข้อผิดพลาด: Python.h: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าวเป็นการบ่งชี้ว่าส่วนหัวของ Python หายไป
  • ไฟล์ส่วนหัว libpq พวกเขามักจะมีการติดตั้งในแพคเกจเช่นlibpq-dev หากคุณได้รับข้อผิดพลาด: libpq-fe.h: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าวคุณหายไป
  • โปรแกรม pg_config : ก็มักจะติดตั้งโดยlibpq-devแพคเกจ แต่บางครั้งก็ไม่ได้อยู่ในไดเรกทอรีเส้นทาง การมีไว้ใน PATH ช่วยเพิ่มความคล่องตัวในการติดตั้งดังนั้นลองใช้ pg_config --version: หากพบข้อผิดพลาดหรือหมายเลขเวอร์ชันที่ไม่คาดคิดจากนั้นค้นหาไดเรกทอรีที่มี pg_config จัดส่งมาพร้อมกับเวอร์ชัน libpq ที่ถูกต้อง (ปกติ / usr / lib / postgresql / XY / bin /) และเพิ่มลงใน PATH: $ export PATH=/usr/lib/postgresql/X.Y/bin/:$PATH คุณต้องการเพียง pg_config เพื่อคอมไพล์ psycopg2 ไม่ใช่เพื่อการใช้งานปกติ

บน Ubuntu ฉันต้องติดตั้งไลบรารี libpq-dev ก่อนแล้วจึงเรียกใช้คำสั่ง pip install อีกครั้ง:apt install libpq-dev
Benjamin

20

UPDATE /etc/yum.repos.d/CentOS-Base.repo, [base] และ [updates] ส่วน
ADD ไม่รวม = 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

20

สำหรับผู้ที่ใช้ OS X โซลูชันนี้ใช้งานได้สำหรับฉัน:

1) ติดตั้ง Postgres.app:

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

2) จากนั้นเปิด Terminal และเรียกใช้คำสั่งนี้แทนที่ที่มันบอกว่า {{version}} ด้วยหมายเลขเวอร์ชัน Postgres:

ส่งออก PATH = $ PATH: /Applications/Postgres.app/Contents/Versions / {{version}} / bin

เช่น

ส่งออก PATH = $ PATH: /Applications/Postgres.app/Contents/Versions/9.4/bin


หรือsudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/pg_config /usr/local/bin/pg_config
Subin Sebastian

17

ลองเพิ่มลงใน PATH:

PATH=$PATH:/usr/pgsql-9.1/bin/ ./pip install psycopg2

-bash: cd: /usr/pgsql-x.x/bin/: No such file or directory
pylover

@pylover คุณต้องใช้พา ธ ที่ถูกต้องไปยังไดเร็กตอรี่ Postgres bin ของคุณ คุณแน่ใจหรือว่า/usr/pgsql-x.x/bin/ถูกต้อง?
Marboni

มันก็เพียงพอแล้วที่จะเพิ่มโฟลเดอร์ที่pg_ไฟล์สำคัญทั้งหมดอยู่ สำหรับ postgres.app เส้นทางนี้บน Mac OS X /Applications/Postgres.app/Contents/Versions/9.3/binเป็น PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin โปรดอัปเดตเวอร์ชันของคุณ*หากมีเวอร์ชันใหม่ออกมา!
ทิมDaubenschütz

สิ่งนี้ใช้ได้กับฉันใน OS X El Capitan:PATH=$PATH:/usr/local/Cellar/postgresql/9.5.0/bin/
David Hariri

16

โซลูชันของ Ali ทำงานให้ฉัน แต่ฉันมีปัญหาในการค้นหาตำแหน่งโฟลเดอร์ bin วิธีที่รวดเร็วในการค้นหาเส้นทางบน Mac OS X คือการเปิด psql (มีลิงค์ด่วนในแถบเมนูด้านบน) นี่จะเปิดหน้าต่างเทอร์มินัลแยกต่างหากและบนบรรทัดที่สองพา ธ ของการติดตั้ง Postgres ของคุณจะปรากฏดังนี้:

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

ไฟล์ pg_config ของคุณอยู่ในโฟลเดอร์ bin นั้น ดังนั้นก่อนการติดตั้ง psycopg2 ให้ตั้งค่าพา ธ ของไฟล์ pg_config:

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

หรือสำหรับเวอร์ชั่นที่ใหม่กว่า:

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

จากนั้นติดตั้ง psycopg2


1
เอกสารที่ใหม่กว่าใช้เส้นทางต่อไปนี้:/Applications/Postgres.app/Contents/Versions/9.3/bin
jpimentel

ดูเหมือนว่าจะย้ายไป find /usr/local -name 'pg_config'
Praxeolitic

11

คุณต้องอัพเกรด pip ของคุณก่อนติดตั้ง psycopg2 ใช้คำสั่งนี้

pip install --upgrade pip

คำตอบที่ละเอียดมากขึ้นอาจเป็นประโยชน์ในกรณีส่วนใหญ่
bkausbk

11

ฉันจะออกจากที่นี่เพื่อวิญญาณผู้เคราะห์ร้ายคนต่อไปที่ไม่สามารถแก้ไขปัญหานี้ได้แม้จะมีวิธีแก้ไขทั้งหมด เพียงใช้sudo pip3 install psycopg2-binary


สิ่งนี้ไม่ได้ผลสำหรับฉัน เพียง แต่brew install postgresqlคงมัน
tsando

คุณอาจต้องให้pip install psycopg2-binaryฉัน: pip -> python2, pip3 -> python3 แต่ตราบใดที่คุณทำให้มันทำงานได้มันเป็นหนึ่งในหลาย ๆ วิธี!
DuDoff

9

เพียงแก้ไขปัญหาใน Cent OS 7 โดย:

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

ตรวจสอบว่าเวอร์ชัน PostgreSql ของคุณตรงกับรุ่นที่ถูกต้องด้านบน


9

บน Mac OS X และหากคุณใช้งานแอพ Postgres ( http://postgresapp.com/ ):

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

ไม่จำเป็นต้องระบุรุ่นของ Postgres ในคำสั่งนี้ มันจะชี้ไปที่ล่าสุดเสมอ

และทำ

pip install psycopg2

PS: หากการเปลี่ยนแปลงไม่สะท้อนคุณอาจต้องเริ่มต้นใหม่พร้อมท์ Terminal / Command

แหล่ง




8

บน MacOS โซลูชันที่ง่ายที่สุดคือ symlink ไบนารีที่ถูกต้องซึ่งอยู่ภายใต้แพ็คเกจ Postgres

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

สิ่งนี้ไม่เป็นอันตรายและแอปพลิเคชันทั้งหมดจะสามารถใช้งานได้ทั้งระบบหากจำเป็น


ใช้งานได้สำหรับฉันไม่ต้อง sudo แม้ว่า ขอบคุณ!
John Ottenlips

ได้ผลสำหรับฉันแน่นอน!
Hadnazzar


5

ที่นี่เพื่อความสมบูรณ์ของ OS X: หากคุณติดตั้ง PostgreSQL จาก MacPorts, pg_config จะอยู่ในนั้น /opt/local/lib/postgresql94/bin/pg_configนั้น

เมื่อคุณติดตั้ง MacPort มันได้เพิ่มไปแล้ว /opt/local/binไปยัง PATH ของคุณแล้ว

ดังนั้นสิ่งนี้จะแก้ไขปัญหา: $ sudo ln -s /opt/local/lib/postgresql94/bin/pg_config /opt/local/bin/pg_config

ตอนนี้pip install psycopg2จะสามารถทำงานได้pg_configโดยไม่มีปัญหา


4

สำหรับผู้ใช้บน macOS Catalina โดยใช้zshเชลล์ที่ติดตั้งแอพ postgres ด้วย :

เปิด~/.zshrcไฟล์ของคุณและเพิ่มบรรทัดต่อไปนี้:

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

จากนั้นปิดเทอร์มินัลทั้งหมดของคุณเปิดใหม่อีกครั้งและคุณจะแก้ปัญหาของคุณได้แล้ว

หากคุณไม่ต้องการปิดเทอร์มินัลเพียงป้อนsource ~/.zshrcสิ่งที่เทอร์มินัลที่คุณต้องการทำงานต่อไป


สิ่งนี้ใช้ได้กับฉันใน Macos และzshshell!
Aditya Rao

4

สำหรับผู้ใช้ Mac ขยายตัวแปรเส้นทางของคุณจะรวม PostgreSQL export PATH=$PATH:/Library/PostgreSQL/12/binเช่นนี้


3

นี่คือวิธีที่ฉันจัดการเพื่อติดตั้ง 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 .

2

ฉันค่อนข้างมั่นใจว่าคุณเคยประสบปัญหา "ปัญหา" เดียวกันกับที่ฉันทำดังนั้นฉันจะเสนอทางออกที่ง่ายที่สุดให้คุณ ...

ในกรณีของคุณเส้นทางจริงที่คุณต้องเพิ่มใน $ PATH (หรือเป็นพารามิเตอร์คำสั่ง) คือ:

/usr/pgsql-9.1/bin/pg_config

ไม่

/usr/pgsql-9.1/bin

เช่นหากคุณเรียกใช้สคริปต์ python setup.py หลังจากนั้นคุณจะเรียกใช้ดังนี้:

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

อาจจะสายเกินไป แต่ก็ยังเป็นทางออกที่ง่ายที่สุด

การแก้ไขภายหลัง:

ภายใต้การทดสอบเพิ่มเติมฉันพบว่าถ้าคุณเพิ่มเส้นทางไปยัง pg_config ในแบบฟอร์ม

/usr/pgsql-9.1/bin

(โดยไม่มี / pg_config หลังจาก ..... / bin) และเรียกใช้คำสั่ง pip install มันจะทำงาน

อย่างไรก็ตามหากคุณตัดสินใจทำตามสิ่งบ่งชี้เพื่อเรียกใช้งาน python setup.py คุณจะต้องระบุพา ธ ด้วย / pg_config หลัง ..... / bin เช่น

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

อีกทางเลือกหนึ่งในการเพิ่มไดเรกทอรี pgsql / bin ไปยัง PATH ที่ฉันใช้บิตที่ยุติธรรมคือ symlink /usr/pgsql-9.6/bin/pg_config(หรืออะไรก็ตามที่มันถูกเรียกในระบบของคุณ) ไปที่/usr/bin/pg_config- ซึ่งมันมีอยู่ใน PATH ที่คุณมีอยู่แล้ว
Ralph Bolton

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.