Non dimenticare che la tua variabile $ PATH nell'ambiente virtuale! = La tua variabile $ PATH globale. Puoi confermarlo con 'echo $ PATH' nel tuo virtualenv e anche in una nuova shell. Quindi, a meno che tu non voglia installare PostgreSQL come un'istanza unica all'interno del tuo ambiente virtuale (cosa che non vale la pena fare, imo), dovrai modificare la variabile $ PATH all'interno di virtualenv per includere il percorso della tua installazione globale (che sarà risolvi l'errore pg_config mancante).
Ecco i passaggi:
1.) In una nuova shell, digita "which pg_config". Questo restituirà il percorso. Copialo. Nel mio caso, il percorso era così: /Applications/Postgres.app/Contents/Versions/9.3/bin
2.) Torna nella tua shell virtualenv, digita 'export PATH = / your-path-to-pg_config: $ PATH'
3.) Quindi, sempre all'interno di virtualenv, "pip install psycopg2"
Se tutto va secondo i piani, questo installerà psycopg2 nell'ambiente virtuale, ma l'installazione farà riferimento alla tua installazione Global PostgreSQL. Nel mio caso, questa installazione globale è stata installata tramite Postgres.App, da cui il percorso. Preferisco questo metodo di lavorare con psycopg2 in quanto significa che posso utilizzare facilmente il database all'interno di qualsiasi virtualenv piuttosto che solo all'interno dell'ambiente virtuale definito.
Spero che questo aiuti chiunque arrivi qui. Per Google Juice, ecco il linguaggio di errore esplicito (e vago) restituito quando si verifica questo problema:
Comando python setup.py egg_info non riuscito con codice di errore 1