pg_config thực thi không tìm thấy


769

Tôi gặp sự cố khi cài đặt psycopg2. Tôi nhận được lỗi sau khi tôi cố gắng 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

Nhưng vấn đề pg_configthực sự nằm ở tôi PATH; Nó chạy mà không có vấn đề gì:

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

Tôi đã thử thêm đường dẫn pg_config vào setup.cfgtệp và xây dựng nó bằng các tệp nguồn tôi đã tải xuống từ trang web của họ ( http://initd.org/psycopg/ ) và tôi nhận được thông báo lỗi sau!

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

Nhưng nó thực sự là !!!

Tôi bị bối rối bởi những lỗi này. Ai có thể giúp tôi không?

Nhân tiện, tôi sudotất cả các lệnh. Ngoài ra tôi đang trên RHEL 5.5.


8
Khi bạn chạy các lệnh như sudo, $PATHđược thay đổi. Bạn có thể vui lòng kiểm tra lại $ PATH của bạn khi root không?
Hugo Tavares

1
Trong trường hợp của tôi, tôi chạy ln -s /usr/pgsql-9.1/bin/pg_config /usr/sbin/pg_configvà mọi thứ đều ổn!
CK.Nguyen 23/8/2016

Cảm ơn @ CK.Nguyen bạn tip thực sự làm việc cho tôi.
pratibha

Câu trả lời:


764

pg_configcó trong postgresql-devel( libpq-devtrong Debian / Ubuntu, libpq-develtrên Centos / Cygwin / Babun.)


66
Đã giải quyết sau khi cài đặt libpq-devtrên Ubuntu lucid (10.04). Cảm ơn bạn trước.
pylover

22
pg_configcủa postTHER.app là tại /Applications/Postgres.app/Contents/Versions/<your version>/bin(Mac OS X)
Tim Daubenschütz 17/03/2015

17
Đó là libpqxx-develtrên fedora.
cướp

55
sudo apt-get install libpq-devlàm việc cho tôi trên Ubuntu
Bill Cheatham

48
trên Alpine Linux: apk thêm postgresql-dev
RJ

385

Trên Mac OS X, tôi đã giải quyết nó bằng trình quản lý gói homebrew

brew install postgresql

29
Thông minh! Điều này đã giải quyết vấn đề cho tôi, nhưng người mới nên biết rằng bạn cần cài đặt trình quản lý gói Homebrew trước để brewlệnh hoạt động.
seane

Làm việc cho tôi cũng vậy, mặc dù tôi đã cài đặt brew sau khi cài đặt pgadmin.
Khanal

8
Không cài đặt toàn bộ cơ sở dữ liệu?
zmbq

3
Tôi cần thêmbrew link postgresql
vincentlcy

1
Để thêm vào nhận xét của @ seane, hãy sử dụng hướng dẫn này để cài đặt homebrew.
Bruce Wayne

236

Bạn đã cài đặt python-devchưa? Nếu bạn đã có, hãy thử cài đặtlibpq-dev

sudo apt-get install libpq-dev python-dev

Từ bài viết: Cách cài đặt psycopg2 trong virtualenv


Trong máy tính của tôi, tôi chỉ cài đặt ứng dụng khách của Postgresql, do đó bạn phải cài đặt libpq-dev và python-dev.
bnPYSse

2
Nghi ngờ rằng python-dev là cần thiết.
juanitogan

nó đã giúp tôi. Cảm ơn
Arun

4
python3-dev là cần thiết. Không có nó tôi nhận đượcPython.h: No such file or directory
krubo

1
thêm một sự phụ thuộc cần thiết cho việc này làapt-get install -y gcc
Anum Sheraz

74

Ngoài ra trên OSX. Đã cài đặt PostTHER.app từ http://postgresapp.com/ nhưng có cùng một vấn đề.

Tôi tìm thấy pg_configtrong nội dung của ứng dụng đó và thêm thư mục vào $PATH.

Đó là tại /Applications/Postgres.app/Contents/Versions/latest/bin. Vì vậy, điều này đã làm việc : export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH".


3
@GianlucaLodigiani bạn cũng có thể làm điều này nếu bạn không muốn khởi động lại bàn điều khiểnPATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH" pip install psycopg2
Bernardo Duarte


38

Đây là những gì làm việc cho tôi trên CentOS, cài đặt đầu tiên:

sudo yum install postgresql postgresql-devel python-devel

Trên Ubuntu chỉ cần sử dụng các gói apt-get tương đương.

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

Và bây giờ bao gồm đường dẫn đến thư mục nhị phân postgresql của bạn với cài đặt pip, điều này sẽ hoạt động cho Linux dựa trên Debain hoặc RHEL:

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

Hãy chắc chắn bao gồm đường dẫn chính xác. Đó là tất cả :)


1
Trên Ubuntu sudo apt-get install postgresql postgresql-dev python-dev, và nó hoạt động với tôi.
modulitos

2
cũng hoạt động trên Amazon Linux AMI kể từ tháng 12 năm 2016. Ngoài ra, hãy đảm bảo đã gccđược cài đặt và python3-devel.
biệt thự

cảm ơn bạn!!! Nó cũng hoạt động trên Fedora 32 Workstation!
Marcelo Gazzola


34

Bạn nên thêm các yêu cầu python được sử dụng trong Postgres trên Ubuntu. Chạy:

sudo apt-get install libpq-dev python-dev

32

Chỉ cần tóm tắt, tôi cũng phải đối mặt với chính xác vấn đề tương tự. Sau khi đọc rất nhiều bài viết stackoverflow và blog trực tuyến, giải pháp cuối cùng phù hợp với tôi là:

1) PostgreSQL (phát triển hoặc bất kỳ phiên bản ổn định nào) nên được cài đặt trước khi cài đặt psycopg2.

2) Tệp pg_config (tệp này thường nằm trong thư mục bin của thư mục cài đặt PostgreQuery) PATH phải được thiết lập rõ ràng trước khi cài đặt psycopg2. Trong trường hợp của tôi, cài đặt PATH cho PostgreSQL là:

/opt/local/lib/postgresql91/

Vì vậy, để thiết lập rõ ràng PATH của tệp pg_config, tôi đã nhập lệnh sau trong thiết bị đầu cuối của mình:

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

Lệnh này đảm bảo rằng khi bạn cố gắng cài đặt pipycycg2, nó sẽ tự động tìm PATH để pg_config.

Tôi cũng đã đăng một lỗi đầy đủ với dấu vết và giải pháp của nó trên blog của tôi mà bạn có thể muốn tham khảo. Nó dành cho Mac OS X nhưng vấn đề Pg_config PATH là chung và cũng có thể áp dụng cho Linux.


6
Đối với tôi trên OS X, con đường trông như thế nàyPATH="/Applications/Postgres.app/Contents/Versions/9.3/bin:$PATH"
andilabs

@andi Yea, đường dẫn cài đặt của Postgres có thể khác nhau nhưng công thức cài đặt cho psycopg2 mà tôi đã đề cập ở trên vẫn giống nhau. Hy vọng nó sẽ giúp.
Ali Raza Bhayani

30

sudo apt-get install libpq-dev hoạt động với tôi trên Ubuntu 15.4


Nếu bạn sử dụng Ubuntu mới hơn, vẫn sử dụng hướng dẫn cài đặt đã nói ở trên. Xem pg_config
palik


21

Bạn có thể cài đặt các tệp nhị phân được biên dịch sẵn trên bất kỳ nền tảng nào có piphoặc conda:

python -m pip install psycopg2-binary

hoặc là

conda install psycopg2

Xin lưu ý rằng trang pypi nhị phân psycopg2 khuyên bạn nên xây dựng từ nguồn trong sản xuất:

Gói nhị phân là một lựa chọn thực tế để phát triển và thử nghiệm, nhưng trong sản xuất, nên sử dụng gói được xây dựng từ các nguồn

Để sử dụng gói được xây dựng từ các nguồn, sử dụng python -m pip install psycopg2. Quá trình đó sẽ yêu cầu một số phụ thuộc ( tài liệu ) (nhấn mạnh của tôi):

  • Trình biên dịch AC .
  • Các tập tin tiêu đề Python . Chúng thường được cài đặt trong một gói như python-dev . Một thông báo như lỗi: Python.h: Không có tệp hoặc thư mục nào như vậy là dấu hiệu cho thấy các tiêu đề Python bị thiếu.
  • Các tập tin tiêu đề libpq . Chúng thường được cài đặt trong một gói như libpq-dev . Nếu bạn gặp lỗi: libpq-fe.h: Không có tệp hoặc thư mục như vậy bạn đang thiếu chúng.
  • Các chương trình pg_config : nó thường được cài đặt bởi các libpq-dev gói nhưng đôi khi nó không phải là trong một thư mục PATH. Có nó trong PATH hợp lý hóa việc cài đặt, vì vậy hãy thử chạy pg_config --version: nếu nó trả về lỗi hoặc số phiên bản không mong muốn thì hãy tìm thư mục chứa pg_config được gửi với phiên bản libpq phù hợp (thường là / usr / lib / postgresql / XY / bin /) và thêm nó vào PATH: $ export PATH=/usr/lib/postgresql/X.Y/bin/:$PATH Bạn chỉ cần pg_config để biên dịch psycopg2, không sử dụng thường xuyên.

Trên Ubuntu, trước tiên tôi cần cài đặt thư viện libpq-dev và sau đó chỉ cần chạy lại lệnh cài đặt pip:apt install libpq-dev
Benjamin

20

CẬP NHẬT /etc/yum.repos.d/CentOS-Base.repo, [cơ sở] và [cập nhật] phần
ADD loại trừ = 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

Đối với những người chạy OS X, giải pháp này hiệu quả với tôi:

1) Cài đặt Postgres.app:

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

2) Sau đó mở Terminal và chạy lệnh này, thay thế nơi nó nói {{phiên bản}} bằng số phiên bản Postgres:

xuất PATH = $ PATH: /Appluggest/Postgres.app/Contents/Versions / {{version}} / bin

ví dụ

xuất PATH = $ PATH: /Appluggest/Postgres.app/Contents/Versions/9.4/bin


Hoặc liên kết nó với phiên bản mới nhấtsudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/pg_config /usr/local/bin/pg_config
Subin Sebastian

17

Hãy thử thêm nó vào 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, bạn cần sử dụng đúng đường dẫn đến thư mục bin Postgres của bạn. Bạn có chắc /usr/pgsql-x.x/bin/là đúng?
Marboni

Chỉ cần thêm thư mục chứa tất cả pg_các tệp quan trọng là đủ . Đối với postgres.app đường dẫn này trên Mac OS X là /Applications/Postgres.app/Contents/Versions/9.3/bin. PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin Vui lòng cập nhật phiên bản của bạn * nếu một phiên bản mới được phát hành!
Tim Daubenschütz

Điều này làm việc cho tôi trên OS X El Capitan:PATH=$PATH:/usr/local/Cellar/postgresql/9.5.0/bin/
David Hariri

16

Giải pháp của Ali làm việc cho tôi nhưng tôi gặp khó khăn khi tìm vị trí thư mục bin. Một cách nhanh chóng để tìm đường dẫn trên Mac OS X là mở psql (có một liên kết nhanh trong thanh menu trên cùng). Điều này sẽ mở một cửa sổ đầu cuối riêng biệt và trên dòng thứ hai, đường dẫn cài đặt Postgres của bạn sẽ xuất hiện như sau:

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

Tệp pg_config của bạn nằm trong thư mục bin đó. Do đó, trước khi cài đặt psycopg2, hãy đặt đường dẫn của tệp pg_config:

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

hoặc cho phiên bản mới hơn:

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

Sau đó cài đặt psycopg2.


1
Các tài liệu mới hơn sử dụng đường dẫn sau:/Applications/Postgres.app/Contents/Versions/9.3/bin
jpimentel

Nó dường như di chuyển về. find /usr/local -name 'pg_config'
Praxeolitic

11

Bạn cần nâng cấp pip trước khi cài đặt psycopg2. Sử dụng lệnh này

pip install --upgrade pip

Một câu trả lời chi tiết hơn có thể hữu ích trong hầu hết các trường hợp.
bkausbk

11

Tôi sẽ để điều này ở đây cho linh hồn bất hạnh tiếp theo, người không thể giải quyết vấn đề này mặc dù tất cả các giải pháp được cung cấp. Đơn giản chỉ cần sử dụngsudo pip3 install psycopg2-binary


Điều này đã không làm việc cho tôi. Chỉ brew install postgresqlsửa nó.
tsando

Bạn có thể phải pip install psycopg2-binarycho tôi: pip -> python2, pip3 -> python3. Nhưng miễn là bạn làm cho nó hoạt động, đó là một trong nhiều giải pháp!
DuDoff

9

Chỉ cần giải quyết vấn đề trong Cent OS 7 bằng cách:

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

đảm bảo phiên bản PostgreSql của bạn phù hợp với phiên bản phù hợp ở trên.


9

Trên Mac OS X và Nếu bạn đang sử dụng Ứng dụng Postgres ( http://postgresapp.com/ ):

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

Không cần chỉ định phiên bản của Postgres trong lệnh này. Nó sẽ luôn luôn được chỉ ra mới nhất.

và làm

pip install psycopg2

PS: Nếu Thay đổi không phản ánh, bạn có thể cần phải khởi động lại dấu nhắc Terminal / Command

Nguồn




8

Trên MacOS, giải pháp đơn giản nhất sẽ là liên kết chính xác nhị phân, nằm trong gói Postgres.

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

Điều này khá vô hại và tất cả các ứng dụng sẽ có thể sử dụng nó trên toàn hệ thống, nếu cần.


Làm việc cho tôi, không phải sudo mặc dù. Cảm ơn bạn!
John Ottenlips

Làm việc cho tôi thực sự!
Hadnazzar


5

Ở đây, để hoàn thiện OS X: nếu bạn cài đặt PostgreSQL từ MacPorts, pg_config sẽ có trong /opt/local/lib/postgresql94/bin/pg_config.

Khi bạn đã cài đặt MacPorts, nó đã được thêm vào /opt/local/binPATH của bạn.

Vì vậy, điều này sẽ khắc phục vấn đề: $ sudo ln -s /opt/local/lib/postgresql94/bin/pg_config /opt/local/bin/pg_config

Bây giờ pip install psycopg2sẽ có thể chạy pg_configmà không có vấn đề.


4

Đối với những người dùng macOS Catalina sử dụng trình zshbao cũng đã cài đặt ứng dụng postgres :

Mở ~/.zshrctệp của bạn và thêm dòng sau:

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

Sau đó đóng tất cả các thiết bị đầu cuối của bạn, mở lại chúng và bạn sẽ giải quyết vấn đề của mình.

Nếu bạn không muốn đóng thiết bị đầu cuối của mình, chỉ cần nhập source ~/.zshrcbất kỳ thiết bị đầu cuối nào bạn muốn tiếp tục làm việc.


Điều này làm việc cho tôi trên Macos và zshshell!
Aditya Rao

4

Đối với người dùng mac, hãy mở rộng biến đường dẫn của bạn để bao gồm PostgreSQL như thế này export PATH=$PATH:/Library/PostgreSQL/12/bin.


3

Đây là cách tôi quản lý để cài đặt 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

Tôi khá chắc chắn rằng bạn đã trải qua "vấn đề" tương tự tôi đã làm, do đó tôi sẽ cung cấp cho bạn giải pháp cực kỳ dễ dàng ...

Trong trường hợp của bạn, đường dẫn thực tế mà bạn cần thêm vào $ PATH (hoặc dưới dạng tham số lệnh) là:

/usr/pgsql-9.1/bin/pg_config

không phải

/usr/pgsql-9.1/bin

Ví dụ: nếu bạn chạy tập lệnh python setup.py sau đó, bạn sẽ chạy nó như thế này:

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

Có lẽ đã quá muộn, nhưng vẫn là giải pháp dễ nhất.

EDIT LATER:

Trong bài kiểm tra thêm tôi phát hiện ra rằng nếu ban đầu bạn thêm đường dẫn đến pg_config trong biểu mẫu

/usr/pgsql-9.1/bin

(không có / pg_config sau ..... / bin) và chạy lệnh cài đặt pip, nó sẽ hoạt động.

Tuy nhiên, nếu sau đó bạn quyết định làm theo chỉ dẫn để chạy python setup.py, bạn sẽ phải chỉ định đường dẫn với / pg_config sau ..... / bin, tức là

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

Một cách khác để thêm thư mục pssql / bin vào PATH mà tôi đã sử dụng một chút công bằng là liên kết tượng trưng /usr/pgsql-9.6/bin/pg_config(hoặc bất cứ thứ gì nó được gọi trên hệ thống của bạn) /usr/bin/pg_config- theo cách đó nó có sẵn trong PATH mà bạn đã có.
Ralph Bolton

2

đối với CentOS / RedHat, hãy đảm bảo rằng đó /etc/alternatives/pgsql-pg_configlà một liên kết tượng trưng không bị hỏng

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.