Bạn cần cài đặt postgresql-server-dev-XY để xây dựng tiện ích mở rộng phía máy chủ hoặc libpq-dev để xây dựng ứng dụng phía máy khách


243

Tôi đang làm việc trên dự án Django với virtualenv và kết nối nó với cơ sở dữ liệu postgres cục bộ. Khi tôi chạy dự án thì nói,

ImportError: No module named psycopg2.extensions

sau đó tôi sử dụng lệnh này để cài đặt

pip install psycopg2

sau đó trong quá trình cài đặt nó đưa ra lỗi sau.

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

Bạn đã cài đặt gói đó? Nếu không, cài đặt nó sẽ giải quyết vấn đề. Xin lưu ý rằng cài đặt postgresql-server-X.Ymột mình sẽ không giúp ích gì, vì chỉ cài đặt tệp nhị phân, thư viện và tệp dữ liệu của máy chủ, không phải tệp phát triển (nằm trong gói đã nói ở trên).
Abrixas2

Câu trả lời:


490

Sử dụng các lệnh sau, điều này sẽ giải quyết lỗi:

sudo apt-get install postgresql

rồi bắn:

sudo apt-get install python-psycopg2

và cuối cùng:

sudo apt-get install libpq-dev

36
Tôi chỉ cần libs khách hàng. "sudo apt-get install libpq-dev" đã giải quyết nó cho tôi. Cảm ơn
Priyeshj

6
Tôi thấy rằng tôi cũng phải cài đặt sudo apt-get install python-devngoài ra để cuối cùng nó hoạt động
ScottMcC

18
Cảm ơn bạn! sudo apt-get install libpq-devđã làm cho tôi!
Julian Guterman

1
@ManishShrivastava, Chào mừng
MB

1
sử dụng sudo apt-get install python3-psycopg2để thêm vào python3
Ramesh Verma

67

Tôi chỉ chạy lệnh này như một root từ terminal và vấn đề được giải quyết,

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

hoặc là

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

5
Cảm ơn rất nhiều, libpq-devpython-devđã làm phép thuật cần thiết
avtomaton

2
postgis? woot
techkuz

đôi khi chạy cập nhật sudo apt sẽ sửa loại lỗi này. Tôi đã thử cả hai giải pháp nhưng không thành công. chạy sudo apt udpate đã giải quyết nó.
Aleem

46

Chỉ cần cài đặt libpq-dev

$ sudo apt-get install libpq-dev

30

Đối với tôi lệnh đơn giản này đã giải quyết vấn đề:

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

Sau đó tôi có thể làm:

 pip install psycopg2

14

Đối với Python 3, tôi đã làm:

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

và sau đó tôi đã có thể làm:

pip3 install psycopg2

13

Họ đã thay đổi bao bì cho psycopg2. Cài đặt phiên bản nhị phân đã khắc phục sự cố này cho tôi. Các câu trả lời ở trên vẫn giữ nếu bạn muốn tự biên dịch nhị phân.

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

Các gói nhị phân không còn được cài đặt theo mặc định. Gói 'psycopg2-binary' phải được sử dụng rõ ràng.

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

Vì vậy, nếu bạn không cần phải biên dịch nhị phân của riêng mình, hãy sử dụng:

pip install psycopg2-binary

1
Ngài đã cứu mạng tôi
Haroun Hajem

3
psycopg2-binarykhông được sử dụng trong sản xuất, vì nó sẽ gây ra một số lỗi.
suhailvs

1
psycopg2-binarykhông nên được sử dụng trong sản xuất: initd.org/psycopg/docs/install.html#binary-install-from-pypi (Văn bản sao chép: Gói nhị phân psycopg2 dành cho người mới bắt đầu chơi với Python và PostgreQuery mà không cần Nếu bạn là người duy trì gói xuất bản tùy thuộc vào psycopg2, bạn không nên sử dụng 'psycopg2-binary' làm phụ thuộc mô-đun. Để sử dụng sản xuất, bạn nên sử dụng phân phối nguồn.)
Joseph Victor Zammit

10

Bạn phải thiết lập postgresql-server-dev-XY, trong đó XY phiên bản máy chủ của bạn và nó sẽ cài đặt libpq-dev và các biến máy chủ khác tại các mô-đun để phát triển phía máy chủ. Trong trường hợp của tôi, nó là

apt-get install postgresql-server-dev-9.5

Đọc danh sách gói ... Xong Xây dựng cây phụ thuộc Đọc thông tin trạng thái ... Xong Các gói sau được cài đặt tự động và không còn bắt buộc: libmysqlclient18 mysql-common Sử dụng 'apt-get autoremove' để xóa chúng. Các gói bổ sung sau sẽ được cài đặt:
libpq-dev Các gói được đề xuất: postgresql-doc-10 Các gói MỚI sau đây sẽ được cài đặt: libpq-dev postgresql-server-dev-9.5

Trong trường hợp của bạn

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

4

Tôi đã sử dụng một môi trường ảo trên Ubuntu 18.04 và vì tôi chỉ muốn cài đặt nó như một máy khách, tôi chỉ phải làm:

sudo apt install libpq-dev
pip install psycopg2

Và cài đặt mà không có vấn đề. Tất nhiên, bạn có thể sử dụng nhị phân như các câu trả lời khác đã nói, nhưng tôi thích giải pháp này vì nó được nêu trong tệp tests.txt.

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.