Не забывайте, что ваша переменная $ PATH в виртуальной среде! = Ваша глобальная переменная $ PATH. Вы можете подтвердить это с помощью 'echo $ PATH' в вашем виртуальном окружении, а также в новой оболочке. Итак, если вы не хотите установить PostgreSQL в качестве уникального экземпляра в своей виртуальной среде (что не стоит делать, я думаю), вам необходимо изменить переменную $ PATH в virtualenv, чтобы включить путь к вашей глобальной установке (что будет решить вашу отсутствующую ошибку pg_config).
Вот шаги:
1.) В новой оболочке введите which pg_config. Это вернет путь. Скопируйте это. В моем случае путь выглядел так: /Applications/Postgres.app/Contents/Versions/9.3/bin
2.) Вернувшись в оболочку virtualenv, введите «export PATH = / your-path-to-pg_config: $ PATH»
3.) Затем, все еще в пределах virtualenv, «pip install psycopg2»
Если все пойдет по плану, это установит psycopg2 в виртуальной среде, но установка будет относиться к вашей установке Global PostgreSQL. В моем случае эта глобальная установка была установлена через Postgres.App, отсюда и путь. Я предпочитаю этот метод работы с psycopg2, поскольку он означает, что я могу легко использовать базу данных в любом виртуальном окружении, а не только в определенной виртуальной среде.
Надеюсь, это поможет любому, кто сюда приедет. Для сока Google вот явный (и расплывчатый) язык ошибки, возвращаемый при столкновении с этой проблемой:
Команда python setup.py egg_info завершилась неудачно с кодом ошибки 1