Anda perlu menginstal postgresql-server-dev-XY untuk membangun ekstensi sisi-server atau libpq-dev untuk membangun aplikasi sisi klien


243

Saya sedang mengerjakan proyek Django dengan virtualenv dan menghubungkannya ke database postgres lokal. ketika saya menjalankan proyek ini dikatakan,

ImportError: No module named psycopg2.extensions

maka saya menggunakan perintah ini untuk menginstal

pip install psycopg2

kemudian selama instalasi itu memberikan kesalahan berikut.

Downloading/unpacking psycopg2==2.4.4
  Downloading psycopg2-2.4.4.tar.gz (648kB): 648kB downloaded
  Running setup.py (path:/home/muhammadtaqi/Projects/MyProjects/OnlineElectionCampaign/venv/build/psycopg2/setup.py) egg_info for package psycopg2

    Error: You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.

    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: You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.



----------------------------------------
Cleaning up...
Command python setup.py egg_info failed with error code 1 in /home/muhammadtaqi/Projects/MyProjects/OnlineElectionCampaign/venv/build/psycopg2
Storing debug log for failure in /home/muhammadtaqi/.pip/pip.log

Sudahkah Anda menginstal paket itu? Jika tidak, menginstalnya harus menyelesaikan masalah. Harap dicatat bahwa menginstal postgresql-server-X.Ysaja tidak akan membantu, karena itu hanya menginstal biner server, pustaka dan file data, bukan file pengembangan (yang ada dalam paket yang disebutkan di atas).
Abrixas2

Jawaban:


490

Gunakan perintah berikut ini, ini akan menyelesaikan kesalahan:

sudo apt-get install postgresql

lalu api:

sudo apt-get install python-psycopg2

dan terakhir:

sudo apt-get install libpq-dev

36
Saya hanya perlu lib klien. "sudo apt-get install libpq-dev" menyelesaikannya untuk saya. Terima kasih
Priyeshj

6
Saya menemukan bahwa saya juga harus menginstal sudo apt-get install python-devdi samping untuk akhirnya bekerja
ScottMcC

18
Terima kasih! sudo apt-get install libpq-devbekerja untukku!
Julian Guterman

1
@ManishShrivastava, Selamat Datang
megabyte

1
menggunakan sudo apt-get install python3-psycopg2 untuk menambah python3
Ramesh Verma

67

Saya hanya menjalankan perintah ini sebagai root dari terminal dan masalah terpecahkan,

sudo apt-get install -y postgis postgresql-9.3-postgis-2.1
pip install psycopg2

atau

sudo apt-get install libpq-dev python-dev
pip install psycopg2

5
Terima kasih banyak, libpq-devdan python-devmelakukan sihir yang diperlukan
avtomaton

2
postgis? woot
techkuz

terkadang menjalankan pembaruan sudo apt akan memperbaiki jenis kesalahan ini. Saya mencoba kedua solusi tetapi gagal. menjalankan sudo apt udpate menyelesaikannya.
Aleem

46

Cukup instal libpq-dev

$ sudo apt-get install libpq-dev

30

Bagi saya, perintah sederhana ini memecahkan masalah:

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

Maka saya bisa melakukan:

 pip install psycopg2

14

Untuk Python 3, saya lakukan:

sudo apt install python3-dev postgresql postgresql-contrib python3-psycopg2 libpq-dev

dan kemudian saya bisa melakukan:

pip3 install psycopg2

13

Mereka mengubah kemasan untuk psycopg2. Menginstal versi biner memperbaiki masalah ini untuk saya. Jawaban di atas masih bertahan jika Anda ingin mengkompilasi biner sendiri.

Lihat http://initd.org/psycopg/docs/news.html#what-s-new-in-ps-psycopg-2-8 .

Paket biner tidak lagi diinstal secara default. Paket 'psycopg2-binary' harus digunakan secara eksplisit.

Dan http://initd.org/psycopg/docs/install.html#binary-install-from-pypi

Jadi, jika Anda tidak perlu mengkompilasi biner Anda sendiri, gunakan:

pip install psycopg2-binary

1
Anda Tuan menyelamatkan hidup saya
Haroun Hajem

3
psycopg2-binarytidak boleh digunakan dalam produksi, karena akan menyebabkan beberapa bug.
suhailvs

1
psycopg2-binarytidak boleh digunakan dalam produksi: initd.org/psycopg/docs/install.html#binary-install-from-pypi (Teks yang disalin: Paket binary psycopg2 dimaksudkan bagi pemula untuk mulai bermain dengan Python dan PostgreSQL tanpa perlu memenuhi persyaratan build. Jika Anda adalah pengelola paket publish tergantung pada psycopg2 Anda tidak boleh menggunakan 'psycopg2-binary' sebagai dependensi modul. Untuk penggunaan produksi Anda disarankan untuk menggunakan distribusi sumber.)
Joseph Victor Zammit

10

Anda harus mengatur postgresql-server-dev-XY, di mana XY versi server Anda, dan itu akan menginstal variabel libpq-dev dan server lainnya pada modul untuk pengembangan sisi server. Dalam kasus saya itu

apt-get install postgresql-server-dev-9.5

Membaca daftar paket ... Selesai membangun pohon ketergantungan membaca informasi status negara ... Selesai Paket berikut ini diinstal secara otomatis dan tidak lagi diperlukan: libmysqlclient18 mysql-common Gunakan 'apt-get autoremove' untuk menghapusnya. Paket tambahan berikut ini akan diinstal:
libpq-dev Paket yang disarankan: postgresql-doc-10 Paket BARU berikut ini akan diinstal: libpq-dev postgresql-server-dev-9.5

Dalam kasusmu

sudo apt-get install postgresql-server-dev-X.Y
sudo apt-get install python-psycopg2

4

Saya menggunakan lingkungan virtual pada Ubuntu 18.04, dan karena saya hanya ingin menginstalnya sebagai klien, saya hanya perlu melakukan:

sudo apt install libpq-dev
pip install psycopg2

Dan diinstal tanpa masalah. Tentu saja, Anda dapat menggunakan biner sebagai jawaban lain, tetapi saya lebih suka solusi ini karena dinyatakan dalam file requirement.txt.

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.