Đừng quên rằng biến $ PATH của bạn trong môi trường ảo! = Biến $ PATH toàn cục của bạn. Bạn có thể xác nhận điều này bằng 'echo $ PATH' trong virtualenv của mình và cả trong một shell mới. Vì vậy, trừ khi bạn muốn cài đặt PostgreSQL như một phiên bản duy nhất bên trong môi trường ảo của mình (không phải là điều đáng làm, imo), bạn sẽ cần phải sửa đổi biến $ PATH trong virtualenv để bao gồm đường dẫn đến cài đặt chung của bạn (điều này sẽ giải quyết lỗi pg_config bị thiếu của bạn).
Đây là các bước:
1.) Trong một trình bao mới, nhập 'which pg_config'. Điều này sẽ trả lại đường dẫn. Sao chép nó. Trong trường hợp của tôi, đường dẫn trông như thế này: /Application/Postgres.app/Contents/Versions/9.3/bin
2.) Quay lại trình bao virtualenv của bạn, nhập 'export PATH = / your-path-to-pg_config: $ PATH'
3.) Sau đó, vẫn trong virtualenv, 'pip install psycopg2'
Nếu tất cả diễn ra theo đúng kế hoạch, điều này sẽ cài đặt psycopg2 trong môi trường ảo, nhưng cài đặt sẽ tham chiếu đến cài đặt Global PostgreSQL của bạn. Trong trường hợp của tôi, cài đặt Toàn cầu này đã được cài đặt qua Postgres.App, do đó là đường dẫn. Tôi thích phương pháp này làm việc với psycopg2 vì nó có nghĩa là tôi có thể sử dụng cơ sở dữ liệu dễ dàng trong bất kỳ virtualenv nào hơn là chỉ trong môi trường ảo đã xác định.
Hy vọng điều này sẽ giúp bất cứ ai đến đây. Đối với Google juice, đây là ngôn ngữ lỗi rõ ràng (và mơ hồ) được trả lại khi bạn gặp sự cố này:
Lệnh python setup.py egg_info không thành công với mã lỗi 1