Istnieje kilka argumentów:
Używaj repozytoriów / PPA, ponieważ zapewniają one stabilność i aktualność dzięki poprawkom bezpieczeństwa.
Jest to w większości prawda. Jeśli na przykład instalujesz python-django
tak jak ja, otrzymujesz aktualizacje zabezpieczeń. Jest to dobre, ponieważ musisz tylko nadążać za apt, ale nadal musisz testować rzeczy przed wypchnięciem aktualizacji (chociaż testowanie powinno być w porządku za każdym razem).
Można argumentować, że jeśli używałeś pip
, nigdy nie możesz sprawdzić dostępności aktualizacji.
Użyj, pip
aby użyć odpowiednich „stabilnych” wersji.
Nie ma co do tego wątpliwości: repozytoria pozostają w tyle za prawdziwym światem. Django to 2.0, ale repozytorium dla wersji LTS Ubuntu (z którą wiele osób trzyma się serwerów) dostajesz tylko 1,8 na Ubuntu 16.4 lts z Python 2, ale wciąż otrzymujesz aktualizacje zabezpieczeń.
pip
daje ci najnowsze informacje przez cały czas. Musisz tylko je zaktualizować.
Uaktualnienie instalacji Pythona w repozytorium może być koszmarem
Kiedy uaktualniasz Ubuntu do następnej wersji, aktualizuje on wiele pakietów. Wiele rzeczy się zmienia. Wiem, że w Django oznacza to, że musisz uważać na niezgodności kodu, wycofania ... Ale to samo dotyczy wszystkich innych kodów Pythona.
To samo dotyczy, pip
ale z pip
tobą możesz zrobić jedną rzecz na raz. Wiesz, co powoduje problemy, więc wiesz, gdzie szukać rozwiązania.
pip
+ virtualenv
pozwala zachować osobność
virtualenv
pozwala mieć przenośne, małe środowiska Python. To pozwala mieć kilka różnych środowisk Pythona działających równolegle na tym samym komputerze.
Oczywistym dobrodziejstwem wydaje się być konserwacja, ponieważ możesz zarządzać środowiskiem w taki sam sposób, jak zarządzasz kodem. Nawet przechowuj środowisko w VCS ... ale powinieneś pamiętać, że posiadanie dwunastu różnych virtualenv
s oznacza dwanaście środowisk, które musisz sprawdzić i zaktualizować.
Edycja: Po strasznej serii aktualizacji na serwerze, aby przenieść go z Lucid do Precise, zmieniłem z mieszanej Apt + pip (nr 1 i 2) na czystą pip + virtualenv (nr 4). Zamiast mieć jednego virtualenv na stronę, mam jeden wspólny między kilkanaście stron. To działa na teraz.
Musiałem też napisać mały skrypt, który sprawdza status pakietów zainstalowanych z pipem. Jeśli są aktualizacje, muszę je zastosować ręcznie (co jest dobre, ponieważ testuję je lokalnie, w lokalnym virtualenv). To wszystko jest jeszcze trochę bardziej bolesne niż początkowo, ale na dłuższą metę znacznie lepsze.