Bagaimana cara menginstal psycopg2 dengan "pip" di Python?

506

Saya menggunakan virtualenvdan saya harus menginstal "psycopg2".

Saya telah melakukan yang berikut:

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

Dan saya punya pesan berikut:

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

Pertanyaan saya, saya hanya perlu melakukan ini agar psycopg2 berfungsi?

python setup.py build_ext --pg-config /path/to/pg_config build ...
André
sumber
3
Apakah itu berhasil ketika Anda mencoba python setup.py build_ext --pg-config / path / to / pg_config build ... ??
lajarre
2
Untuk python 3.4 atau python 3.5, Anda harus menginstal paket dev verion yang sesuai seperti sudo apt install libpq-dev python3.4-devatausudo apt install libpq-dev python3.5-dev
Avinash Raj

Jawaban:

810

Catatan : Sejak beberapa waktu yang lalu, ada roda biner untuk Windows di PyPI, jadi ini seharusnya tidak lagi menjadi masalah bagi pengguna Windows. Di bawah ini adalah solusi untuk Linux, pengguna Mac, karena banyak dari mereka menemukan posting ini melalui pencarian web.


Pilihan 1

Instal psycopg2-binarypaket PyPI sebagai gantinya, ia memiliki roda Python untuk Linux dan Mac OS.

pip install psycopg2-binary

pilihan 2

Instal prerequsisites untuk membangun psycopg2paket dari sumber:

Debian / Ubuntu

Python 3

sudo apt install libpq-dev python3-dev

Anda mungkin perlu menginstal python3.8-dev atau serupa untuk misalnya Python 3.8.

Python 2 1

sudo apt install libpq-dev python-dev

Jika itu tidak cukup, coba

sudo apt install build-essential

atau

sudo apt install postgresql-server-dev-all

juga sebelum menginstal psycopg2 lagi.

CentOS 6

Lihat jawaban Banjer


1 Benarkah? Ini tahun 2020

joar
sumber
7
11,04: kesalahan berbeda, solusi yang sama. Menyembah versi dev!
I159
5
@ I159 - *-devPaket - paket berisi file yang diperlukan untuk mengkompilasi aplikasi dari sumber yang menggunakan fungsi-fungsi yang disediakan oleh perpustakaan (seperti psycopg2menggunakan libpqdan pythonperpustakaan, antara lain).
joar
21
Saya menggunakan Ubuntu 12,04 LTS, dan saya juga harussudo apt-get install postgresql-server-dev-all
caleb
4
Bisakah seseorang tolong jelaskan mengapa tidak hanya direktori yang berisi pg_config ke PATH (atau gunakan --pg-config)?
lajarre
5
Jika Anda di sini karena Anda mengalami kesulitan menginstal psycopg2 ke dalam wadah python 3 Seledri dari Dockerhub, Anda juga perlu menginstal build-essential withsudo apt-get install -y build-essential
derrend
118

Pada CentOS, Anda memerlukan paket-paket postgres dev:

sudo yum install python-devel postgresql-devel

Setidaknya itulah solusi pada CentOS 6.

Banjer
sumber
1
Ini bukan hanya CentOS, saya pikir. psycopg memiliki dependensi asli, jadi untuk membangun dari sumber (yang dilakukan pip), pustaka pengembangan PostgreSQL harus ada di sana. (Header C, mungkin? Saya tidak tahu banyak tentang kompilasi kode asli.)
jpmc26
3
Saya setuju bahwa ini menyelesaikan masalah pada CentOS 6. Saya ingin menambahkan bahwa saya memang harus menambahkan /usr/pgsql-9.3/bin ke $ PATH. Ini adalah postingan yang memberikan contoh cara melakukannya. serverfault.com/questions/102932/...
Ryder Brooks
Untuk CentOS 7 dan Python 3.4 saya harus menginstal "python34-devel". Jawaban saya untuk pertanyaan terkait: stackoverflow.com/a/42370489/26219
Mark Edington
Bekerja pada AWS EC2, dengan 64bit berbasis Linux Amazon RHEL / 2.5.1
Ben Wheeler
Untuk Python3 dalam penggunaan Fedora sudo yum install python36-devel(ganti 36 dengan versi Python 3 Anda).
LoMaPh
85

Pada Mac Mavericks dengan Postgres.app versi 9.3.2.0 RC2 saya perlu menggunakan kode berikut setelah menginstal Postgres:

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

metasequoia
sumber
sudo PATH = $ PATH: /Applications/Postgres93.app/Contents/MacOS/bin pip instal psycopg2 [per 5 April 2014]
user798719
2
jika Anda menggunakan virtualenv Anda tidak perlu 'sudo' begitu aktifkan virtualenv Anda dan jalankan 'PATH = $ PATH: /Applications/Postgres.app/Contents/Versions/9.3/bin pip install psycopg2'
elin3t
3
Kasus saya OS X Ver 10.9.4: sudo PATH = $ PATH: /Library/PostgreSQL/9.2/bin pip instal psycopg2
emecas
3
Ya, ini juga berhasil bagi saya. Setelah menginstal PostgreSQL, saya harus mengatur jalur saya dengan melakukan PATH=$PATH:/Library/PostgreSQL/9.4/bin pip install psycopg2.
iamfrancisyo
4
Gunakan versi terbaru: PATH = $ PATH: /Applications/Postgres.app/Contents/Versions/latest/bin pip install psycopg2
Diego Sarmiento
80

jika Anda menggunakan mac, Anda dapat menggunakan homebrew

brew install postgresql

Dan semua opsi lain ada di sini: http://www.postgresql.org/download/macosx/

Semoga berhasil

nichochar
sumber
2
jawaban nichochar dan jawaban attomos (instal postgresql dan ubah path) bersama-sama menyelesaikan masalah untuk saya. cara termudah untuk mengedit jalur adalah dengan menjalankan "sudo nano / etc / path" dari terminal Anda.
tbradley22
2
Terima kasih untuk ini. Aku akan menjadi gila sebelum menemukan ini!
Leo C Han
1
Bekerja untuk saya juga, tidak perlu monyet dengan jalur saya (dan umumnya, saya tidak akan merekomendasikan sudo di sini - Anda harus dapat melakukan ini di ruang pengguna).
duozmo
Ini tidak menginstal postgresql virtualenvseperti yang diminta OP.
Jorge Leitao
Saya tidak berpikir OP ingin postgres di virtualenv. Dia bilang dia menggunakan virtualenv. Saya pikir dia salah paham bahwa postgresql adalah layanan yang lebih besar dari sekadar pustaka python.
nichochar
61

Saya baru-baru mengkonfigurasi psycopg2 pada mesin windows. Instalasi termudah adalah menggunakan biner yang dapat dieksekusi windows. Anda dapat menemukannya di http://stickpeople.com/projects/python/win-psycopg/ .

Untuk menginstal biner asli di lingkungan virtual, gunakan easy_install:

C:\virtualenv\Scripts\> activate.bat
(virtualenv) C:\virtualenv\Scripts\> easy_install psycopg2-2.5.win32-py2.7-pg9.2.4-release.exe
Praveen Gollakota
sumber
3
Terima kasih balasannya. Tetapi saya perlu menginstal ke lingkungan virtual. Salam,
André
4
Trik ini (milik Ned Batchelder) telah membantu saya di masa lalu untuk menginstal dari binari ke virtualenv
Praveen Gollakota
13
Apakah benar-benar tidak ada cara untuk membuat "pip install psycopg2" bekerja di Windows? Bahkan jika patch ke psycopg2 diperlukan, itu akan sia-sia.
slacy
1
Saya mendapatkan kesalahan ini ketika postgres tidak diinstal pada mesin saya - saya menginstal postgres dan kesalahan hilang ...
Sam Joseph
2
tautan stickpeople juga membahas env virtual dan menunjuk ke versi instal pip github.com/nwcell/psycopg2-windows
seanv507
27

Untuk Python 3 Anda harus menggunakan di sudo apt-get install libpq-dev python3-devbawah Debian.

André
sumber
27

Inilah yang berhasil bagi saya (Di RHEL, CentOS:

sudo yum install postgresql postgresql-devel python-devel

Dan sekarang sertakan path ke direktori binary postgresql Anda dengan Anda menginstal:

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

Pastikan untuk memasukkan jalur yang benar. Itu saja :)

PEMBARUAN: Untuk python 3, silakan instal python3-develalih-alihpython-devel

radtek
sumber
Perhatikan bahwa saya tidak perlu memperbarui variabel lingkungan PATH.
suram
Anda tidak harus melakukannya jika memuat ulang sesi terminal Anda.
radtek
Excelent Terima kasih banyak.
Jorge Vidinha
Jika Anda menggunakan Python 3 Anda harus menginstal paket devel Python bernomor. Lihat: stackoverflow.com/a/42370489/26219
Mark Edington
21

Jika Anda menggunakan Mac OS, Anda harus menginstal PostgreSQL dari sumber. Setelah instalasi selesai, Anda perlu menambahkan jalur ini menggunakan:

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

atau Anda dapat menambahkan path seperti ini:

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

dalam .profilefile atau .zshrcfile Anda.

Ini mungkin berbeda berdasarkan sistem operasi.

Anda dapat mengikuti proses instalasi dari http://www.thegeekstuff.com/2009/04/linux-postgresql-install-and-configure-from-source/

attomos
sumber
1
Kenapa dari sumber bukan dari Homebrew?
duozmo
@duozmo dijawab pada tahun 2012 dan saya yakin saya memang mencoba menginstalnya dengan Homebrew pada waktu itu tetapi gagal. Sekarang, saya telah menginstal PostgreSQL menggunakan Homebrew tanpa masalah.
attomos
17

Jawabannya sejauh ini seperti resep sulap. Kesalahan yang Anda terima memberi tahu Anda bahwa pip tidak dapat menemukan bagian yang diperlukan dari pustaka PostgreSQL. Mungkin ini karena Anda menginstalnya di tempat yang tidak standar untuk OS Anda. Itulah sebabnya pesan menyarankan menggunakan opsi --pg-config.

Tapi alasan yang lebih umum adalah Anda tidak menginstal libpq sama sekali. Ini biasanya terjadi pada mesin di mana Anda TIDAK menginstal server PostgreSQL karena Anda hanya ingin menjalankan aplikasi klien, bukan server itu sendiri. Setiap OS / distro berbeda, misalnya pada Debian / Ubuntu Anda perlu menginstal libpq-dev. Ini memungkinkan Anda untuk mengkompilasi dan menautkan kode terhadap pustaka PostgreSQL Query.

Sebagian besar jawaban juga menyarankan menginstal perpustakaan dev Python. Hati-hati. Jika Anda hanya menggunakan Python default yang dipasang oleh distro Anda, itu akan berfungsi, tetapi jika Anda memiliki versi yang lebih baru, itu dapat menyebabkan masalah. Jika Anda telah membangun Python pada mesin ini, maka Anda sudah memiliki perpustakaan dev yang diperlukan untuk mengkompilasi pustaka C / C ++ untuk berinteraksi dengan Python. Selama Anda menggunakan versi pip yang benar, yang diinstal di folder bin yang sama dengan biner python, maka Anda sudah siap. Tidak perlu menginstal versi lama.

Michael Dillon
sumber
1
Dan tentang Os x? Maksud saya, didasarkan pada Unix tapi saya pikir bisa berbeda.
Lara
13

Pada Debian/Ubuntu:

Pertama instal dan bangun dependensi psycopg2paket:

# apt-get build-dep python-psycopg2

Kemudian di lingkungan virtual Anda, kompilasi dan instal psycopg2modul:

(env)$ pip install psycopg2
Omid Raha
sumber
6

Saya telah melakukan ini sebelumnya di mana di windows Anda menginstal pertama ke dalam instalasi python dasar Anda.

Kemudian, Anda menyalin secara manual psycopg2 yang diinstal ke instalasi virtualenv.

Itu tidak cantik, tetapi berhasil.

monkut
sumber
2
dapatkah Anda menjelaskan lebih lanjut? Di mana Anda mendapatkan psycopg2 di tempat pertama?
Saher Ahwal
2
binari windows tersedia di stickpeople.com/projects/python/win-psycopg
monkut
Saya melakukan ini juga, setelah hari yang melelahkan dan semua opsi lain yang telah dijelaskan secara online. Saya masih tercengang tentang apa yang mencegahnya diinstal dengan pip venv. Saya dapat menginstal di luar lingkungan virtual, tidak ada masalah. Saya kemudian benar-benar menyalin file itu dari direktori pustaka paket Python saya dan menempel di dalam yang sama di dalamnya venv. Firasat saya adalah, karena versi saya (s) dari Python adalah distribusi Anaconda, bahwa ada sesuatu yang salah dengan jalur yang diasumsikan / digunakan.
kuanb
5

Selain menginstal paket yang diperlukan, saya juga perlu menambahkan secara manual direktori bin PostgreSQL ke PATH.
$vi ~/.bash_profile
Tambahkan PATH=/usr/pgsql-9.2/bin:$PATHsebelumnya export PATH.
$source ~/.bash_profile
$pip install psycopg2

xtranofilis
sumber
Adakah yang tahu mengapa ini tidak berakhir di jalur default?
Bret
1
Saya mendapat kesalahan seperti itu bagaimana memperbaiki ini, tolong bantu saya !!! Command "/ usr / bin / python -c" import setuptools, tokenize; __ file __ = '/ private / tmp / pip-build-AUbwwG / psycopg2 / setup.py'; exec (kompilasi (getattr (tokenize, 'buka', buka ) ( file ) .read (). ganti ('\ r \ n', '\ n'), file , 'exec')) "instal --record /tmp/pip-44Va05-record/install-record.txt --single-versi-dikelola secara eksternal --compile "gagal dengan kode kesalahan 1 di / private / tmp / pip-build-AUbwwG / psycopg2
vijay
3

Di windows XP Anda mendapatkan kesalahan ini jika postgres tidak diinstal ...

Sam Joseph
sumber
apakah kamu yakin itu benar? Saya memasang postgres di mesin windows saya dan saya masih mendapatkannya. ?
Saher Ahwal
2
Mengapa mereka tidak memilikinya di situs mereka sebagai pre-req untuk memiliki postgres?
Saher Ahwal
3

Saya menginstal Postgresql92 menggunakan repositori RedHat / CentOS di situs unduhan PG http://www.postgresql.org/download/linux/redhat/

Untuk mendapatkan pg_config, saya harus menambahkan /usr/pgsql-9.2/bin ke PATH.

joedborg
sumber
3

Sebelum Anda dapat menginstal psycopg2, Anda harus menginstal paket python-dev.

Jika Anda bekerja dari Linux (dan mungkin sistem lain tetapi saya tidak dapat berbicara dari pengalaman), Anda harus memastikan untuk mengetahui versi python yang Anda jalankan saat menginstal paket dev.

Misalnya ketika saya menggunakan perintah:

sudo apt-get install python3-dev

Saya masih mengalami kesalahan yang sama ketika mencoba

pip install psycopg2

Karena saya menggunakan python 3.7 saya harus menggunakan perintah

sudo apt-get install python3.7-dev

Setelah saya melakukan ini, saya tidak mengalami masalah lagi. Tentunya jika Anda menggunakan python versi 3.5, Anda akan mengubahnya 7 menjadi 5.

Gino
sumber
2
Ini seharusnya jawabannya, sudo apt-get install python-x.x-devperbaiki masalahnya.
Arbazz Hussain
2

Saya telah berjuang dengan ini selama berhari-hari, dan akhirnya menemukan cara untuk mendapatkan perintah "pip install psycopg2" untuk dijalankan dalam virtualenv di Windows (menjalankan Cygwin).

Saya telah memukul "pg_config yang dapat dieksekusi tidak ditemukan." kesalahan, tapi saya sudah mengunduh dan menginstal postgres di Windows. Itu diinstal di Cygwin juga; menjalankan "which pg_config" di Cygwin memberi "/ usr / bin / pg_config", dan menjalankan "pg_config" memberikan output yang waras - namun versi yang diinstal dengan Cygwin adalah:

VERSION = PostgreSQL 8.2.11

Ini tidak akan berfungsi dengan versi psycopg2 saat ini, yang tampaknya membutuhkan setidaknya 9.1. Ketika saya menambahkan "c: \ Program Files \ PostgreSQL \ 9.2 \ bin" ke jalur Windows saya, installer pip Cygwin dapat menemukan versi PostgreSQL yang benar, dan saya berhasil menginstal modul menggunakan pip. (Ini mungkin lebih baik daripada menggunakan versi Cygwin dari PostgreSQL, karena versi asli akan berjalan lebih cepat).

Simetris
sumber
2

Pada Fedora 24: Untuk Python 3.x

sudo dnf install postgresql-devel python3-devel

sudo dnf install redhat-rpm-config

Aktifkan Lingkungan Virtual Anda:

pip install psycopg2
Rajkumar R
sumber
2

Psycopg2 Bergantung pada Perpustakaan Postgres. Di Ubuntu Anda dapat menggunakan:

apt-get install libpq-dev

Kemudian:

pip install psycopg2
Manish Gupta
sumber
Ini bukan praktik yang baik untuk mencampur paket pip dan paket apt-get.
wswld
1

Untuk pengguna Windows rendahan yang terjebak harus menginstal psycopg2 dari tautan di bawah ini, cukup instal ke instalasi Python apa pun yang telah Anda siapkan. Ini akan menempatkan folder bernama "psycopg2" di folder paket situs dari instalasi python Anda.

Setelah itu, cukup salin folder itu ke direktori paket situs virtualenv Anda dan Anda tidak akan mengalami masalah.

di sini adalah tautan yang dapat Anda temukan executable untuk menginstal psycopg2

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

Chris Hawkes
sumber
saya mencoba ini dan saya mendapatkan psycopg2-2.6-cp34-none-win_amd64.whl bukan roda yang didukung pada platform ini.
jayeshkv
1

Pada OpenSUSE 13.2, ini memperbaikinya:

sudo zypper in postgresql-devel 
Elliott
sumber
1

Saya bisa menginstalnya di mesin windows dan menggunakan Anaconda / Spyder dengan python 2.7 melalui perintah berikut:

 !pip install psycopg2

Kemudian untuk membuat koneksi ke database:

 import psycopg2
 conn = psycopg2.connect(dbname='dbname',host='host_name',port='port_number', user='user_name', password='password')
Cristian Muñoz
sumber
Saya mendapatkan ini bekerja dengan database terdaftar di psql -l, host localhost, port database default 5432, pengguna terdaftar dengan \dubegitu Anda masuk ke psql dan menebak kata sandi.
Harry Moreno
1

Dalam distribusi Arch base:

sudo pacman -S python-psycopg2
pip2 install psycopg2  # Use pip or pip3 to python3
iraj jelodari
sumber
0

Di Ubuntu saya hanya perlu paket dev postgres:

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

* Diuji dalam virtualenv

marcanuy
sumber
0

Di OSX 10.11.6 (El Capitan)

brew install postgresql
PATH=$PATH:/Library/PostgreSQL/9.4/bin pip install psycopg2
iNoob
sumber
Pada OSX 10.12.3 (Sierra):brew install postgresql PATH=$PATH:/usr/local/Cellar/postgresql/9.6.2/bin/ pip install psycopg2
ishandutta2007
Pada OS X 10.14, ini menjadi sangat menantang. Lihat solusi terperinci di sini: stackoverflow.com/a/57014480/2162844
Bisonbleu
0

Di OSX dengan macport:

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

Saya mengalami masalah ini, alasan utama adalah dengan 2 versi yang sama diinstal. Satu oleh postgres.app dan satu oleh HomeBrew.

Jika Anda memilih untuk hanya menyimpan APP:

brew unlink postgresql
pip3 install psycopg2
Luís De Marchi
sumber
0

Di macOS Mojave pastikan Anda pada pembaruan terbaru dengan Command Line Tools 10.3 - yang bekerja untuk saya - memperbaruinya dengan Pembaruan Perangkat Lunak, versi sebelumnya dari Command Line Tools di Mojave tidak bekerja untuk saya.

Radek
sumber
-1

Coba ini di Gentoo:

emerge dev-libs/libpqxx
tokhi
sumber
-2

Di windows ini adalah cara kerjanya
Pada prompt perintah setelah menginstal labu melalui pip di lingkungan virtual, jalankan perintah ini

>pip install psycopg2

Lihat ini

Tessaracter
sumber