Wszystkie te problemy ze środowiskiem są dość powszechne podczas tworzenia programów w Pythonie / django! Przeszedłem przez wszystkie te problemy i przetestowałem kilka rozwiązań! Rzeczy, które przetestowałem:
- Projekt działa lokalnie
- Projekt działający w virtualenv
- Projekt działający na maszynie wirtualnej
- Projekt działający na maszynie wirtualnej przy użyciu vagrant
Najlepsze rozwiązanie jakie znalazłem to nr 4! ponieważ firma, w której pracowałem, każda osoba w zespole ma inny system operacyjny, wszelkiego rodzaju okna, Mac i Linux, a zainstalowanie wszystkich zależności dla każdego środowiska zajmuje trochę czasu! Postanowiliśmy więc wypróbować virtualenv, który jest naprawdę dobry! ale wciąż każda osoba musi ustawić własne środowisko. Problem w virtualenv polega na tym, że wszystkie źródła Pythona znajdują się w środowisku, które tworzysz! Więc nie wypychałbym tych plików do kontroli wersji źródła! Najlepszym rozwiązaniem było nr 4, ponieważ właśnie tego potrzebowałem, Vagrant używa programu Chef do skonfigurowania środowiska, więc musisz po prostu napisać kilka przepisów i pozwolić włóczęgom uruchomić je za Ciebie! Następnie przesyłasz te przepisy do SCM, a gdy następna osoba pobierze pliki z SCM i przeładuje maszynę wirtualną, wszystkie zależności zostaną automatycznie zainstalowane!
Mam post na blogu wyjaśniający więcej na ten temat, a także stworzyłem projekt Django Blank na githubie, więc możesz to zrobić, aby mieć punkt początkowy twojego projektu za pomocą włóczęgi.
http://arthurnn.com/blog/2011/11/25/easy-django-quickstart/ (link nie jest już aktywny, więc jest powiązany z Wayback Machine)
EDYTOWAĆ
Rozwiązanie autorstwa Chrisa Pratta jest również dobre, jednak niektóre biblioteki nie są tak łatwe do zainstalowania we wszystkich systemach operacyjnych, na przykład wiele osób na komputerach Mac ma problemy, gdy chcą zainstalować MySQLdb-python. która jest naprawdę powszechną biblioteką, ale jeśli wszyscy w twoim zespole muszą spędzać czas na rozwiązywaniu tych problemów, wcale nie jest dobra!
~/path/to/virtualenv/bin/pip freeze > ~/path/to/repo/requirements.txt
. Inni deweloperzy będą musieli skonfigurować własną virtualenv, ale to dosłownie dwa polecenia -virtualenv ~/path/to/env
,~/path/to/env/bin/pip install -r ~/path/to/requirements.txt
.