La differenza tra virtualenv e Vagrant è che virtualenv riguarda solo installazioni Python separate mentre Vagrant riguarda l'intera macchina.
virtualenv isolati l'interprete Python e le dipendenze Python su una macchina in modo da poter installare più progetti Python uno accanto all'altro con le proprie dipendenze. Ma per il resto della macchina il virtualenv non fa nulla: hai ancora dipendenze/pacchetti globali che vengono installati usando il tuo gestore di pacchetti Mac OS X/Linux e questi sono condivisi tra i virtualenvs.
Vagrant specifica l'intera macchina: consente di specificare la distribuzione Linux, i pacchetti da installare e le azioni da intraprendere per l'installazione del progetto. Quindi se vuoi lanciare una scatola di Vagrant con più progetti Python su quella macchina devi comunque usare virtualenv per mantenere separate le dipendenze Python.
Ad esempio, uno sviluppatore su Mac OS X e uno sviluppatore su Ubuntu Linux possono utilizzare virtualenv per mantenere i loro progetti Python installato ma avevano bisogno di usare Vagrant per lanciare a livello locale la stessa macchina (ad esempio, un Linux distribuzione che corrisponde al server distribuito) per eseguire esattamente la stessa versione di Linux con gli stessi pacchetti installati su di essa e con le stesse installazioni del progetto Python.
Quindi, per rispondere alla tua domanda, il motivo per usare Vagrant è che ti permette di creare localmente una macchina con i pacchetti esatti installati mentre virtualenv si occuperebbe solo delle dipendenze di Python.
fonte
2014-11-21 20:01:13
Grazie per la spiegazione @Simeon –