Làm cách nào để cài đặt psycopg2 với bản Pip Pip trên Python?


506

Tôi đang sử dụng virtualenvvà tôi cần cài đặt "psycopg2".

Tôi đã làm như sau:

pip install http://pypi.python.org/packages/source/p/psycopg2/psycopg2-2.4.tar.gz#md5=24f4368e2cfdc1a2b03282ddda814160

Và tôi có các tin nhắn sau:

Downloading/unpacking http://pypi.python.org/packages/source/p/psycopg2/psycopg2
-2.4.tar.gz#md5=24f4368e2cfdc1a2b03282ddda814160
  Downloading psycopg2-2.4.tar.gz (607Kb): 607Kb downloaded
  Running setup.py egg_info for package from http://pypi.python.org/packages/sou
rce/p/psycopg2/psycopg2-2.4.tar.gz#md5=24f4368e2cfdc1a2b03282ddda814160
    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'.
    Complete output from command python setup.py egg_info:
    running egg_info

creating pip-egg-info\psycopg2.egg-info

writing pip-egg-info\psycopg2.egg-info\PKG-INFO

writing top-level names to pip-egg-info\psycopg2.egg-info\top_level.txt

writing dependency_links to pip-egg-info\psycopg2.egg-info\dependency_links.txt

writing manifest file 'pip-egg-info\psycopg2.egg-info\SOURCES.txt'

warning: manifest_maker: standard file '-c' not found

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
Storing complete log in C:\Documents and Settings\anlopes\Application Data\pip\p
ip.log

Câu hỏi của tôi, tôi chỉ cần làm điều này để làm cho psycopg2 hoạt động?

python setup.py build_ext --pg-config /path/to/pg_config build ...

3
Nó có hoạt động không khi bạn đã thử python setup.py build_ext --pg-config / path / to / pg_config build ... ??
lajarre

2
Đối với python 3,4 hoặc python 3.5, bạn phải cài đặt gói dev của verion tương ứng như sudo apt install libpq-dev python3.4-devhoặcsudo apt install libpq-dev python3.5-dev
Avinash Raj

Câu trả lời:


809

Lưu ý : Từ một thời gian trước, có các bánh xe nhị phân cho Windows trong PyPI, vì vậy điều này không còn là vấn đề đối với người dùng Windows. Dưới đây là các giải pháp cho người dùng Linux, Mac, vì rất nhiều người trong số họ tìm thấy bài đăng này thông qua các tìm kiếm trên web.


lựa chọn 1

psycopg2-binaryThay vào đó, cài đặt gói PyPI, nó có các bánh xe Python cho Linux và Mac OS.

pip install psycopg2-binary

Lựa chọn 2

Cài đặt các điều kiện tiên quyết để xây dựng psycopg2gói từ nguồn:

Debian / Ubuntu

Con trăn 3

sudo apt install libpq-dev python3-dev

Bạn có thể cần phải cài đặt python3.8-devhoặc tương tự, ví dụ Python 3.8.

Con trăn 2 1

sudo apt install libpq-dev python-dev

Nếu vẫn chưa đủ, hãy thử

sudo apt install build-essential

hoặc là

sudo apt install postgresql-server-dev-all

cũng như trước khi cài đặt lại psycopg2.

CentOS 6

Xem câu trả lời của Banjer's


1 thật sao? Đó là năm 2020


7
11.04: các lỗi khác nhau, cùng một giải pháp. Thờ phượng các phiên bản dev!
I159

5
@ I159 - Các *-devgói chứa các tệp cần thiết để biên dịch một ứng dụng từ nguồn sử dụng các chức năng được cung cấp bởi thư viện (như psycopg2sử dụng libpqpythoncác thư viện, trong số các thư viện khác).
tham gia

21
Tôi đang sử dụng Ubuntu 12.04 LTS và tôi cũng đã phảisudo apt-get install postgresql-server-dev-all
caleb

4
Ai đó có thể giải thích tại sao không chỉ thư mục chứa pg_config cho PATH (hoặc sử dụng --pg-config) không?
lajarre

5
Nếu bạn ở đây vì bạn gặp sự cố khi cài đặt psycopg2 vào thùng chứa python 3 Celery từ Dockerhub, bạn cũng sẽ cần cài đặt bản dựng cần thiết vớisudo apt-get install -y build-essential
derrend

118

Trên CentOS, bạn cần các gói dev postgres:

sudo yum install python-devel postgresql-devel

Đó là giải pháp trên CentOS 6 ít nhất.


1
Đây không chỉ là CentOS, tôi nghĩ vậy. psycopg có các phụ thuộc riêng, vì vậy để xây dựng từ nguồn (đó là những gì pip làm), các thư viện phát triển PostgreQuery cần phải có. (Các tiêu đề C, có lẽ? Tôi không biết nhiều về việc biên dịch mã gốc.)
jpmc26

3
Tôi đồng ý rằng điều này giải quyết vấn đề trên CentOS 6. Tôi muốn thêm rằng tôi đã phải thêm /usr/pgsql-9.3/bin vào $ PATH. Đây là một bài viết cho một ví dụ về cách làm điều đó. serverfault.com/questions/102932/ trộm
Ryder Brooks

Đối với CentOS 7 và Python 3.4, tôi đã phải cài đặt "python34-devel". Câu trả lời của tôi cho một câu hỏi liên quan: stackoverflow.com/a/42370361/26219
Mark Edington

Hoạt động trên AWS EC2, với Amazon Linux / 2.5.1 dựa trên RHEL
Ben Wheeler

Đối với Python3 trong Fedora, hãy sử dụng sudo yum install python36-devel(thay thế 36 bằng phiên bản Python 3 của bạn).
LoMaPh

85

Trên Mac Mavericks với Postgres.app phiên bản 9.3.2.0 RC2 tôi cần sử dụng mã sau khi cài đặt Postgres:

sudo PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin pip install psycopg2


sudo PATH = $ PATH: /Applications/Postgres93.app/Contents/MacOS/bin pips cài đặt psycopg2 [kể từ ngày 05 tháng 4 năm 2014]
user798719

2
nếu bạn đang sử dụng virtualenv, bạn không cần 'sudo', hãy kích hoạt virtualenv của bạn và chạy 'PATH = $ PATH: /Appluggest/Postgres.app/Contents/Versions/9.3/bin pip cài đặt psycopg2'
elin3t

3
Trường hợp của tôi OS X Ver 10.9.4: sudo PATH = $ PATH:
L Library / PostgreQuery / .20 / bin

3
Vâng, điều này làm việc cho tôi quá. Sau khi cài đặt PostgreSQL, tôi phải thiết lập đường dẫn của mình bằng cách thực hiện PATH=$PATH:/Library/PostgreSQL/9.4/bin pip install psycopg2.
iamfrancisyo

4
Sử dụng phiên bản mới nhất: PATH = $ PATH: /Appluggest/Postgres.app/Contents/Versions/latest/bin pip cài đặt psycopg2
Diego Sarmiento

80

nếu bạn đang dùng mac, bạn có thể sử dụng homebrew

brew install postgresql

Và tất cả các tùy chọn khác đều có ở đây: http://www.postgresql.org/doad/macosx/

Chúc may mắn


2
câu trả lời của nichochar và câu trả lời của attomos (cài đặt postgresql và sửa đổi đường dẫn) cùng nhau giải quyết vấn đề cho tôi. cách dễ nhất để chỉnh sửa đường dẫn là chạy "sudo nano / etc / path" từ thiết bị đầu cuối của bạn.
tbradley22

2
Cảm ơn vì điều này. Tôi sắp phát điên trước khi tôi tìm thấy thứ này!
Leo C Han

1
Làm việc cho tôi cũng vậy, không cần phải theo con đường của tôi (và nói chung, tôi sẽ không đề xuất sudo ở đây - bạn sẽ có thể làm điều này trong không gian người dùng).
duozmo

Điều này không cài đặt postgresql virtualenvgiống như OP yêu cầu.
Jorge Leitao

Tôi không nghĩ OP nhất thiết muốn postgres trong virtualenv. Ông nói rằng ông đang sử dụng virtualenv. Tôi nghĩ rằng anh ta đã hiểu nhầm rằng postgresql là một dịch vụ lớn hơn đơn giản là một thư viện python.
nichochar

61

Gần đây tôi đã cấu hình psycopg2 trên máy tính windows. Cài đặt đơn giản nhất là sử dụng nhị phân thực thi của windows. Bạn có thể tìm thấy nó tại http://stickpeople.com/projects/python/win-psycopg/ .

Để cài đặt nhị phân gốc trong một enConnionment ảo, hãy sử dụng easy_install:

C:\virtualenv\Scripts\> activate.bat
(virtualenv) C:\virtualenv\Scripts\> easy_install psycopg2-2.5.win32-py2.7-pg9.2.4-release.exe

3
Cảm ơn vi đa trả lơi. Nhưng tôi cần cài đặt vào một môi trường ảo. Trân trọng nhất,
André

4
Thủ thuật này (lịch sự, Ned Batchelder) đã giúp tôi trong quá khứ cài đặt từ nhị phân sang virtualenv
Praveen Gollakota

13
Có thực sự không có cách nào để "pip install psycopg2" hoạt động trên Windows không? Ngay cả khi một bản vá cho psycopg2 là cần thiết, nó sẽ có giá trị.
Slacy

1
Tôi đã gặp lỗi này khi postgres không được cài đặt trên máy của tôi - Tôi đã cài đặt postgres và lỗi đã biến mất ...
Sam Joseph

2
liên kết stickpeople cũng thảo luận về env ảo và trỏ đến phiên bản cài đặt pip github.com/nwcell/psycopg2-windows
seanv507

27

Đối với Python 3, bạn nên sử dụng sudo apt-get install libpq-dev python3-devtrong Debian.


27

Đây là những gì làm việc cho tôi (Trên RHEL, CentOS:

sudo yum install postgresql postgresql-devel python-devel

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:

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ả :)

CẬP NHẬT: Đối với python 3, vui lòng cài đặt python3-develthay vìpython-devel


Lưu ý rằng tôi không cần cập nhật biến môi trường PATH.
nghiệt ngã

Bạn không cần phải tải lại phiên cuối của mình.
radtek

Cảm ơn rất nhiều.
Jorge Vidinha

Nếu bạn đang sử dụng Python 3, bạn sẽ cần cài đặt các gói phát triển Python được đánh số. Xem: stackoverflow.com/a/42370361/26219
Đánh dấu Edington

21

Nếu bạn sử dụng Mac OS, bạn nên cài đặt PostgreSQL từ nguồn. Sau khi cài đặt xong, bạn cần thêm đường dẫn này bằng cách sử dụng:

export PATH=/local/pgsql/bin:$PATH

hoặc bạn có thể nối thêm đường dẫn như thế này:

export PATH=.../:usr/local/pgsql/bin

trong .profiletập tin hoặc tập tin của bạn .zshrc.

Điều này có thể thay đổi theo hệ điều hành.

Bạn có thể thực hiện theo quy trình cài đặt từ http: //www.thegeek ware.com/2009/04/linux-postgresql-install-and-configure-from-source/


1
Tại sao từ nguồn thay vì Homebrew?
duozmo

@duozmo nó đã được trả lời vào năm 2012 và tôi tin rằng tôi đã thử cài đặt nó với Homebrew tại thời điểm đó nhưng không thành công. Bây giờ, tôi đã cài đặt PostgreSQL bằng Homebrew mà không gặp vấn đề gì.
attomos

17

Các câu trả lời cho đến nay là quá nhiều như công thức ma thuật. Lỗi mà bạn nhận được cho bạn biết rằng pip không thể tìm thấy một phần cần thiết của thư viện Truy vấn PostgreQuery. Có thể điều này là do bạn đã cài đặt nó ở một nơi không chuẩn cho HĐH của bạn, đó là lý do tại sao thông báo gợi ý sử dụng tùy chọn --pg-config.

Nhưng một lý do phổ biến hơn là bạn không cài đặt libpq. Điều này thường xảy ra trên các máy mà bạn KHÔNG cài đặt máy chủ PostgreSQL vì bạn chỉ muốn chạy ứng dụng khách chứ không phải máy chủ. Mỗi HĐH / distro là khác nhau, ví dụ trên Debian / Ubuntu bạn cần cài đặt libpq-dev. Điều này cho phép bạn biên dịch và liên kết mã với thư viện Truy vấn PostgreSQL.

Hầu hết các câu trả lời cũng đề nghị cài đặt thư viện dev của Python. Hãy cẩn thận. Nếu bạn chỉ sử dụng Python mặc định được cài đặt bởi distro của bạn, điều đó sẽ hoạt động, nhưng nếu bạn có phiên bản mới hơn, nó có thể gây ra sự cố. Nếu bạn đã xây dựng Python trên máy này thì bạn đã có các thư viện dev cần thiết để biên dịch thư viện C / C ++ để giao tiếp với Python. Miễn là bạn đang sử dụng phiên bản pip chính xác, phiên bản được cài đặt trong cùng thư mục bin là nhị phân python, thì bạn đã thiết lập xong. Không cần cài đặt phiên bản cũ.


1
Còn về Os x? Ý tôi là, dựa trên Unix nhưng tôi nghĩ có thể khác.
Lara

13

Vào Debian/Ubuntu:

Đầu tiên cài đặt và xây dựng các phụ thuộc của psycopg2gói:

# apt-get build-dep python-psycopg2

Sau đó, trong môi trường ảo của bạn, biên dịch và cài đặt psycopg2mô-đun:

(env)$ pip install psycopg2

6

Tôi đã thực hiện điều này trước khi trong cửa sổ bạn cài đặt trước vào cài đặt python cơ sở của bạn.

Sau đó, bạn sao chép thủ công psycopg2 đã cài đặt vào cài đặt virtualenv.

Nó không đẹp, nhưng nó hoạt động.


2
bạn có thể giải thích Nơi nào bạn nhận được psycopg2 ở nơi đầu tiên?
Saher Ahwal

2
cửa sổ nhị phân có sẵn tại stickpeople.com/projects/python/win-psycopg
monkut

Tôi cũng đã làm điều này, sau những ngày mệt mỏi và tất cả các lựa chọn khác đã được mô tả trực tuyến. Tôi vẫn chết lặng vì những gì ngăn nó được cài đặt với pip in venv. Tôi đã có thể cài đặt bên ngoài môi trường ảo, không vấn đề gì. Sau đó, tôi đã sao chép tệp đó từ thư mục thư viện gói Python của mình và dán trong cùng một tệp venv. Linh cảm của tôi là, vì (các) phiên bản Python của tôi là bản phân phối Anaconda, rằng có một cái gì đó không ổn với đường dẫn đã được giả định / sử dụng.
kuanb

5

Bên cạnh việc cài đặt các gói cần thiết, tôi cũng cần phải thêm thủ công thư mục bin PostgreSQL vào PATH.
$vi ~/.bash_profile
Thêm PATH=/usr/pgsql-9.2/bin:$PATHtrước export PATH.
$source ~/.bash_profile
$pip install psycopg2


Bất cứ ý tưởng tại sao điều này không kết thúc trong đường dẫn mặc định?
Bret

1
Tôi có một lỗi như thế làm thế nào để khắc phục điều này xin vui lòng giúp tôi !!! Lệnh "/ usr / bin / python -c" nhập setuptools, tokenize; __ file __ = '/ private / tmp / pip-build-AUbwwG / psycopg2 / setup.py'; exec (biên dịch (getattr (tokenize, 'open', open ) ( tệp ) .read (). thay thế ('\ r \ n', '\ n'), tệp , 'exec')) "cài đặt --record /tmp/pip-44Va05-record/install-record.txt --single-version-externally Managed --compile "không thành công với mã lỗi 1 in / private / tmp / pip-build-AUbwwG / psycopg2
vijay

3

Trên windows XP, bạn gặp lỗi này nếu postgres chưa được cài đặt ...


bạn có chắc là đúng không? Tôi đã cài đặt postgres trên máy tính windows của mình và tôi vẫn nhận được điều đó. ?
Saher Ahwal

2
Tại sao họ không có điều đó trên trang web của họ dưới dạng req để có postgres?
Saher Ahwal


3

Trước khi bạn có thể cài đặt psycopg2, bạn sẽ cần cài đặt gói python-dev.

Nếu bạn đang làm việc từ Linux (và có thể cả các hệ thống khác nhưng tôi không thể nói về kinh nghiệm), bạn sẽ cần đảm bảo khá chính xác về phiên bản python nào bạn đang chạy khi cài đặt gói dev.

Ví dụ khi tôi sử dụng lệnh:

sudo apt-get install python3-dev

Tôi vẫn gặp phải lỗi tương tự khi cố gắng

pip install psycopg2

Khi tôi đang sử dụng python 3.7, tôi cần sử dụng lệnh

sudo apt-get install python3.7-dev

Một khi tôi làm điều này, tôi gặp phải vấn đề không còn nữa. Rõ ràng nếu trên phiên bản python 3.5 của bạn, bạn sẽ thay đổi 7 thành 5.


2
Đây phải là câu trả lời, sudo apt-get install python-x.x-devkhắc phục vấn đề.
Arbazz Hussain

2

Tôi đã chiến đấu với điều này trong nhiều ngày và cuối cùng đã tìm ra cách để có được lệnh "pip install psycopg2" để chạy trong virtualenv trong Windows (chạy Cygwin).

Tôi đã nhấn "pg_config thực thi không tìm thấy." lỗi, nhưng tôi đã tải xuống và cài đặt postgres trong Windows. Nó cũng được cài đặt trong Cygwin; chạy "which pg_config" trong Cygwin đã cho "/ usr / bin / pg_config" và chạy "pg_config" đã cho đầu ra lành mạnh - tuy nhiên phiên bản được cài đặt với Cygwin là:

PHIÊN BẢN = PostgreSQL 8.2.11

Điều này sẽ không hoạt động với phiên bản hiện tại của psycopg2, dường như cần ít nhất 9.1. Khi tôi thêm "c: \ Program Files \ PostgreSQL \ 9.2 \ bin" vào đường dẫn Windows của mình, trình cài đặt pip Cygwin có thể tìm thấy phiên bản chính xác của PostgreQuery và tôi đã có thể cài đặt thành công mô-đun bằng pip. (Điều này có lẽ tốt hơn là sử dụng phiên bản Cygwin của PostgreSQL, vì phiên bản gốc sẽ chạy nhanh hơn nhiều).


2

Trên Fedora 24: Dành cho Python 3.x

sudo dnf install postgresql-devel python3-devel

sudo dnf install redhat-rpm-config

Kích hoạt môi trường ảo của bạn:

pip install psycopg2

2

Psycopg2 phụ thuộc vào thư viện Postgres. Trên Ubuntu Bạn có thể sử dụng:

apt-get install libpq-dev

Sau đó:

pip install psycopg2

Đó không phải là một cách thực hành tốt để trộn các gói pip và gói apt-get.
wswld

1

Đối với người dùng Windows thấp, đã bị mắc kẹt khi phải cài đặt psycopg2 từ liên kết bên dưới, chỉ cần cài đặt nó vào bất kỳ cài đặt Python nào bạn đã thiết lập. Nó sẽ đặt thư mục có tên "psycopg2" trong thư mục gói trang web của bản cài đặt python của bạn.

Sau đó, chỉ cần sao chép thư mục đó vào thư mục gói trang web của virtualenv của bạn và bạn sẽ không gặp vấn đề gì.

Đây là liên kết bạn có thể tìm thấy tệp thực thi để cài đặt psycopg2

http://www.lfd.uci.edu/~gohlke/pythonlibs/


tôi đã thử điều này và tôi nhận được psycopg2-2.6-cp34-none-win_amd64.whl không phải là một bánh xe được hỗ trợ trên nền tảng này.
jayeshkv

1

Trên OpenSUSE 13.2, điều này đã sửa nó:

sudo zypper in postgresql-devel 

1

Tôi có thể cài đặt nó trong máy windows và sử dụng Anaconda / Spyder với python 2.7 thông qua các lệnh sau:

 !pip install psycopg2

Sau đó, để thiết lập kết nối với cơ sở dữ liệu:

 import psycopg2
 conn = psycopg2.connect(dbname='dbname',host='host_name',port='port_number', user='user_name', password='password')

Tôi đã làm việc này với cơ sở dữ liệu được liệt kê trong psql -l, lưu trữ localhost, cổng cơ sở dữ liệu mặc định 5432, người dùng được liệt kê với \dumột khi bạn vào psql và đoán mật khẩu.
Harry Moreno

1

Trong bản phân phối cơ sở Arch :

sudo pacman -S python-psycopg2
pip2 install psycopg2  # Use pip or pip3 to python3


0

Trên Ubuntu tôi chỉ cần gói dev postgres:

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

* Đã thử nghiệm trong một virtualenv


0

Trên OSX 10.11.6 (El Capitan)

brew install postgresql
PATH=$PATH:/Library/PostgreSQL/9.4/bin pip install psycopg2

Trên OSX 10.12.3 (Sierra):brew install postgresql PATH=$PATH:/usr/local/Cellar/postgresql/9.6.2/bin/ pip install psycopg2
ishandutta2007

Trên OS X 10.14, điều này rất khó khăn. Xem giải pháp chi tiết tại đây: stackoverflow.com/a/57014480/2162844
Bisonbleu

0

Trên OSX với macports:

sudo port install postgresql96
export PATH=/opt/local/lib/postgresql96/bin:$PATH

0

Tôi đã gặp vấn đề này, lý do chính là với 2 phiên bản bằng nhau được cài đặt. Một bởi postgres.app và một bởi HomeBrew.

Nếu bạn chọn chỉ giữ lại APP:

brew unlink postgresql
pip3 install psycopg2

0

Trên macOS Mojave, đảm bảo bạn cập nhật mới nhất với Công cụ dòng lệnh 10.3 - hoạt động với tôi - đã cập nhật với Cập nhật phần mềm, phiên bản trước của Công cụ dòng lệnh trên Mojave không hoạt động với tôi.


-1

Hãy thử điều này trong Gentoo:

emerge dev-libs/libpqxx

-2

Trên cửa sổ, đây là cách nó hoạt động
Trên dấu nhắc lệnh sau khi cài đặt bình qua pip trong môi trường ảo, hãy chạy lệnh này

>pip install psycopg2

Kiểm tra cái này

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.