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 ...

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


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.


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


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


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

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.


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


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/


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.


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

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.


2
dapatkah Anda menjelaskan lebih lanjut? Di mana Anda mendapatkan psycopg2 di tempat pertama?
Saher Ahwal

2

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


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 ...


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

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.


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).


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

2

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

apt-get install libpq-dev

Kemudian:

pip install psycopg2

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/


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 

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')

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


0

Di Ubuntu saya hanya perlu paket dev postgres:

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

* Diuji dalam virtualenv


0

Di OSX 10.11.6 (El Capitan)

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

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

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

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.


-1

Coba ini di Gentoo:

emerge dev-libs/libpqxx

-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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.