คุณต้องติดตั้ง postgresql-server-dev-XY สำหรับการสร้างส่วนขยายฝั่งเซิร์ฟเวอร์หรือ libpq-dev สำหรับการสร้างแอปพลิเคชันฝั่งไคลเอ็นต์


243

ฉันทำงานโครงการ Django ด้วย virtualenv และเชื่อมต่อกับฐานข้อมูล postgres ในพื้นที่ เมื่อฉันเรียกใช้โปรเจค

ImportError: No module named psycopg2.extensions

จากนั้นฉันใช้คำสั่งนี้เพื่อติดตั้ง

pip install psycopg2

จากนั้นในระหว่างการติดตั้งจะให้ข้อผิดพลาดดังต่อไปนี้

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

คุณติดตั้งแพคเกจนั้นหรือไม่? หากไม่มีการติดตั้งควรแก้ไขปัญหา โปรดทราบว่าการติดตั้งpostgresql-server-X.Yเพียงอย่างเดียวจะไม่ช่วยได้เพราะเพียงแค่ติดตั้งไบนารีเซิร์ฟเวอร์ไลบรารีและไฟล์ข้อมูลไม่ใช่ไฟล์พัฒนา (ซึ่งอยู่ในแพ็คเกจดังกล่าว)
Abrixas2

คำตอบ:


490

ใช้คำสั่งต่อไปนี้สิ่งนี้จะแก้ไขข้อผิดพลาด:

sudo apt-get install postgresql

ไฟแล้ว:

sudo apt-get install python-psycopg2

และสุดท้าย:

sudo apt-get install libpq-dev

36
ฉันแค่ต้องการไคลเอนต์ libs "sudo apt-get install libpq-dev" แก้ไขให้ฉัน ขอบคุณ
Priyeshj

6
ฉันพบว่าฉันต้องติดตั้งsudo apt-get install python-devนอกจากนี้เพื่อให้สามารถใช้งานได้ในที่สุด
ScottMcC

18
ขอบคุณ! sudo apt-get install libpq-devทำงานให้ฉัน!
Julian Guterman

1
@ManishShrivastava ยินดีต้อนรับ
เมกะไบต์

1
ใช้sudo apt-get install python3-psycopg2เพื่อเพิ่มไปยัง python3
Ramesh Verma

67

ฉันเพิ่งรันคำสั่งนี้เนื่องจากรูตจากเทอร์มินัลและปัญหาได้รับการแก้ไข

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

หรือ

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

5
ขอบคุณมากlibpq-devและpython-devทำเวทย์มนตร์ที่จำเป็น
avtomaton

2
postgis? woot
techkuz

บางครั้งการเรียกใช้การปรับปรุง sudo apt จะแก้ไขข้อผิดพลาดประเภทนี้ ฉันลองทั้งวิธีแก้ปัญหา แต่ล้มเหลว ใช้ sudo apt udpate แก้ไขได้
Aleem


30

สำหรับฉันนี้คำสั่งง่ายๆแก้ปัญหา:

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

จากนั้นฉันสามารถทำได้:

 pip install psycopg2


13

พวกเขาเปลี่ยนบรรจุภัณฑ์สำหรับ psycopg2 การติดตั้งเวอร์ชันไบนารีแก้ไขปัญหานี้ให้ฉัน คำตอบข้างต้นยังคงค้างหากคุณต้องการรวบรวมไบนารีด้วยตัวคุณเอง

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

แพ็คเกจไบนารีไม่ได้ติดตั้งตามค่าเริ่มต้น แพ็คเกจ 'psycopg2-binary' ต้องใช้อย่างชัดเจน

และhttp://initd.org/psycopg/docs/install.html#binary-install-from-pypi

ดังนั้นหากคุณไม่จำเป็นต้องรวบรวมไบนารีของคุณเองให้ใช้:

pip install psycopg2-binary

1
คุณช่วยชีวิตฉันไว้
Haroun Hajem

3
psycopg2-binaryต้องไม่ใช้ในการผลิตเพราะจะทำให้เกิดข้อบกพร่องบางอย่าง
suhailvs

1
psycopg2-binary ไม่ควรใช้ในการผลิต: initd.org/psycopg/docs/install.html#binary-install-from-pypi (ข้อความที่คัดลอก: แพ็คเกจ psycopg2-binary มีไว้สำหรับผู้เริ่มต้นที่จะเริ่มเล่นกับ Python และ PostgreSQL โดยไม่จำเป็นต้อง ตอบสนองความต้องการสร้างหากคุณเป็นผู้ดูแลของแพคเกจการเผยแพร่ขึ้นอยู่กับ psycopg2 คุณไม่ควรใช้ 'psycopg2-binary' เป็นการพึ่งพาโมดูลสำหรับการใช้งานการผลิตคุณได้รับคำแนะนำให้ใช้การกระจายแหล่งที่มา)
Joseph Victor Zammit

10

คุณต้องตั้งค่า postgresql-server-dev-XY โดยที่รุ่นเซิร์ฟเวอร์ของ XY ของคุณและมันจะติดตั้ง libpq-dev และตัวแปรเซิร์ฟเวอร์อื่น ๆ ที่โมดูลสำหรับการพัฒนาฝั่งเซิร์ฟเวอร์ ในกรณีของฉันมันเป็น

apt-get install postgresql-server-dev-9.5

กำลังอ่านรายการแพ็กเกจ ... เสร็จสิ้นการสร้างแผนผังการพึ่งพาการอ่านข้อมูลสถานะ ... เสร็จสิ้นแพคเกจต่อไปนี้ถูกติดตั้งโดยอัตโนมัติและไม่ต้องการอีกต่อไป: libmysqlclient18 mysql-common ใช้ 'apt-get autoremove' เพื่อลบออก แพ็กเกจพิเศษต่อไปนี้จะถูกติดตั้ง: แพ็กเกจ
libpq-dev ที่แนะนำ: postgresql-doc-10 แพ็คเกจใหม่ต่อไปนี้จะถูกติดตั้ง: libpq-dev postgresql-server-dev-9.5

ในกรณีของคุณ

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

4

ฉันใช้สภาพแวดล้อมเสมือนจริงบน Ubuntu 18.04 และเนื่องจากฉันเพียงต้องการติดตั้งเป็นไคลเอนต์ฉันจึงต้องทำ:

sudo apt install libpq-dev
pip install psycopg2

และติดตั้งโดยไม่มีปัญหา แน่นอนคุณสามารถใช้ไบนารีเป็นคำตอบอื่น ๆ ที่กล่าว แต่ฉันต้องการโซลูชันนี้เพราะมันระบุไว้ในไฟล์ requirements.txt

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.