Wirtualne środowiska Pythona

Python jest obecnie jednym z najpopularniejszych i najbardziej lubianych języków programowania, i nic nie wskazuje na to, żeby miało się to zmienić. Narzędziem, bez którego nie można wyobrazić sobie pracy w tym języku są wirtualne środowiska - i to właśnie virtualenvom poświęcony będzie ten wpis.

Dlaczego warto?

Środowiska wirtualne (ang. virtualenv) to foldery, które zawierają wybraną przez nas wersję pythona i pakiety których potrzebujemy w naszym projekcie. W dużym skrócie - różne projekty wymagają różnych pakietów. Pracujesz nad aplikacją webową? Przyda się środowisko z Flaskiem lub Django. A może chcesz napisać sieć neuronową? Środowisko z PyTorch, Tensorflow lub numpy zdecydowanie ułatwi zadanie. Dzięki posiadaniu oddzielnych środowisk dopasowanych do potrzeb swoich projektów nie zaśmiecasz instalacji globalnej, masz kontrolę nad wersjami pakietów oraz unikasz chaosu, ponieważ każdy projekt ma własne środowisko. Zarządzanie środowiskami wirtualnymi umożliwiają m.in menadżery venv i conda.

Tworzenie środowiska - Mac, Linux

Python od wersji 3.3 umożliwia tworzenie środowisk za pomocą modułu venv. Odbywa się to za pomocą komendy

python3 -m venv sciezka/do/katalogu

tworzenie srodowiska wirtualnego w terminalu

Utworzone środowisko możemy aktywować wpisując:

source sciezka/do/katalogu/bin/activate

aktywacja srodowiska wirtualnego

Po aktywacji środowiska zobaczymy w konsoli jego nazwę (w wypadku narzędzia venv odpowiada ona nazwie folderu w którym znajduje się środowisko). Aby zainstalować pakiety, używamy polecenia

pip install nazwa_pakietu

w konsoli z aktywnym środowiskiem:

instalacja pakietu django przy użyciu narzędzia pip

Jak widać pakiet i wszystkie zależności niezbędne do jego działania zostały pomyślnie zainstalowane. Możemy wypisać wszystkie pakiety zainstalowane w środowisku wpisując w konsoli

pip freeze

lub

pip list

lista zainstalowanych pakietów

Jeśli korzystamy z systemu kontroli wersji (np. git) warto stworzyć plik w którym znajdą się wymagane w projekcie pakiety wraz z ich wersjami i umieścić go w naszym repozytorium. Dzięki temu szybko przywrócimy nasze środowisko wirtualne, gdy będziemy pracować nad projektem zdalnie lub po prostu na innym komputerze. Aby to zrobić, wystarczy w terminalu z aktywnym środowiskiem wpisać

pip freeze > requirements.txt

utworzenie pliku z wymaganymi pakietami

Możemy teraz w nowym środowisku zainstalować pakiety z pliku wpisując w konsoli

pip install -r requirements.txt

env2 instalacja pakietów z pliku

Reszta przydatnych poleceń to:

pip uninstall nazwa_pakietu

aby odinstalować paczkę,

pip install nazwa_pakietu -U

aby zaktualizować wskazany pakiet,

deactivate

deaktywacja środowiska

Czy to działa?

Jeśli stworzyliśmy środowisko i zainstalowaliśmy na nim pakiety (w tym przypadku był to pakiet django), to logicznym jest, że powinniśmy móc korzystać z dobrodziejstw tych pakietów wewnątrz naszego środowiska i odwrotnie - jeśli środowisko jest nieaktywne, system nie powinien rozpoznać, o co nam chodzi. Sprawdźmy więc, czy wszystko działa tak, jak powinno - skorzystajmy z polecenia, które tworzy nowy projekt w django:

django-admin startproject nazwa_projektu

Najpierw w konsoli z nieaktywnym, a później aktywnym środowiskiem.

stworzenie projektu w django

Jak widać, po aktywacji środowiska udało nam się stworzyć nowy projekt w django.

Podsumowanie

Dowiedzieliśmy się w jaki sposób stworzyć wirtualne środowisko oraz jak zarządzać pakietami wewnątrz niego.