Przechowywanie katalogu virtualenv w git pozwoli, jak zauważyłeś, wdrożyć całą aplikację po prostu wykonując klon git (oraz instalując i konfigurując Apache / mod_wsgi). Jednym potencjalnie istotnym problemem związanym z tym podejściem jest to, że w Linuksie pełna ścieżka jest zakodowana na stałe w skryptach aktywujących venv, django-admin.py, easy_install i pip. Oznacza to, że Twój virtualenv nie będzie w pełni działał, jeśli chcesz użyć innej ścieżki, na przykład do uruchomienia wielu wirtualnych hostów na tym samym serwerze. Wydaje mi się, że witryna może faktycznie działać z nieprawidłowymi ścieżkami w tych plikach, ale przy następnej próbie uruchomienia pipa wystąpiłyby problemy.
Rozwiązaniem, które już podano, jest przechowywanie wystarczającej ilości informacji w git, aby podczas wdrażania można było utworzyć virtualenv i wykonać niezbędne instalacje pip. Zazwyczaj ludzie biegają pip freeze
po listę, a następnie przechowują ją w pliku o nazwie wymagania.txt. Można go załadować pip install -r requirements.txt
. RyanBrady pokazał już, jak można napisać instrukcje wdrażania w jednym wierszu:
# before 15.1.0
virtualenv --no-site-packages --distribute .env &&\
source .env/bin/activate &&\
pip install -r requirements.txt
# after deprecation of some arguments in 15.1.0
virtualenv .env && source .env/bin/activate && pip install -r requirements.txt
Osobiście po prostu umieszczam je w skrypcie powłoki, który uruchamiam po wykonaniu git clone lub git pull.
Przechowywanie katalogu virtualenv sprawia, że nieco trudniej jest obsługiwać aktualizacje pip, ponieważ będziesz musiał ręcznie dodawać / usuwać i zatwierdzać pliki wynikające z aktualizacji. Za pomocą pliku wymagania.txt wystarczy zmienić odpowiednie wiersze w pliku wymagania.txt i uruchomić ponownie pip install -r requirements.txt
. Jak już wspomniano, zmniejsza to również „spam spam”.