Tutti questi problemi ambientali sono abbastanza comuni quando si esegue lo sviluppo di python / django! Ho affrontato tutti questi problemi e ho provato alcune soluzioni! Cose che ho testato:
- Progetto in esecuzione locale
- Progetto in esecuzione in virtualenv
- Progetto in esecuzione in una VM
- Progetto in esecuzione in una VM, utilizzando vagrant
La soluzione migliore che ho trovato è stata la # 4! perché l'azienda in cui lavoravo, ogni persona nel team ha un sistema operativo diverso, tutti i tipi di Windows, Mac e Linux, e per installare tutte le dipendenze per ogni ambiente ci vuole tempo! Quindi abbiamo deciso di provare virtualenv, che è davvero buono! ma comunque ogni persona deve creare il proprio ambiente. Il problema in virtualenv è che tutti i sorgenti python sono all'interno dell'ambiente che crei! Quindi non spingerei quei file a un controllo della versione del codice sorgente! La soluzione migliore era la n.4, perché era esattamente ciò di cui avevo bisogno, Vagrant usa Chef per configurare il tuo ambiente, quindi devi solo scrivere alcune ricette e lasciare che vagrant le esegua per te! Quindi invii quelle ricette a SCM, quindi quando la prossima persona riceve i file da SCM e ricarica la VM tutte le dipendenze verranno installate automaticamente!
Ho un post sul blog che spiega di più sull'argomento e ho creato un progetto Django Blank in GitHub in modo che tu possa ottenerlo per avere un punto di partenza del tuo progetto usando vagrant.
http://arthurnn.com/blog/2011/11/25/easy-django-quickstart/ (link non più attivo, quindi collegato a Wayback Machine)
MODIFICARE
Anche la soluzione di Chris Pratt è buona, tuttavia alcune librerie non sono così semplici da installare in tutti i sistemi operativi, ad esempio, molte persone su Mac hanno problemi quando vogliono installare MySQLdb-python. che è una libreria molto comune, ma se tutti nel tuo team devono dedicare del tempo a risolvere questi problemi, non va bene per niente!
~/path/to/virtualenv/bin/pip freeze > ~/path/to/repo/requirements.txt
. Altri sviluppatori avranno bisogno di impostare la propria virtualenv, ma è letteralmente due comandi -virtualenv ~/path/to/env
,~/path/to/env/bin/pip install -r ~/path/to/requirements.txt
.