Site icon Kamil Kwapisz

Środowiska wirtualne – Nauka Podstaw Pythona

Środowiska wirtualne

Dziesiątki wersji pakietów, bibliotek czy nawet samego języka. Do bibliotek dochodzą nowe funkcje, stare zostają usuwane lub zastępowane. A przecież pracujesz nad wieloma projektami jednocześnie. Jak radzić sobie z tym chaosem? Środowiska wirtualne to rozwiązanie tego problemu.

Problem zależności

Jeżeli jesteś użytkownikiem Windowsa być może spotkałeś się kiedyś z pojęciem piekła zależności (dependency hell).

Piekło zależności

Piekłem zależności określamy sytuację, w której wymagania programów zainstalowanych na komputerze wykluczają się wzajemnie bądź znacznie utrudniają instalację danych programów jednocześnie.

Wytłumaczę to na abstrakcyjnym przykładzie.

Załóżmy, że na komputerze masz zainstalowany program „Profiler”. Do prawidłowego działania wymaga on biblioteki „libra” w wersji 1.0.

Chcesz zainstalować na swoim komputerze również program „Debugger”, jednak on wymaga biblioteki „libra” w wersji co najmniej 2.0.

Biblioteka w wersji 2.0 zostaje zainstalowana, jednak w tym momencie posłuszeństwa odmawia program „Profiler”, gdyż w jego wymaganiach ściśle określono, że potrzebna jest biblioteka w wersji 1.0.

Opisana sytuacje to właśnie piekło zależności.

Problemy z zależnościami w Pythonie

Jak już być może wiesz, siła Pythona tkwi w genialnych bibliotekach. (Swoją drogą, czy pobrałeś już dokument o przydatnych bibliotekach w Pythonie? Jeśli nie, to wskakuj na stronę główną i kliknij w okładkę dokumentu)

Biblioteki te nie są wbudowane, wymagają dodatkowej instalacji (na przykład przy pomocy narzędzia pip).

Podczas instalacji możesz napotkać opisane wcześniej piekło zależności.

Instalując bibliotekę za pomocą narzędzia pip automatycznie instalowane są też inne pakiety określone jako wymagania instalowanej biblioteki.

Co więcej, wersja zainstalowanej już biblioteki możesz zostać zmieniona podczas instalacji, co może powodować problemy z działaniem innych zainstalowanych bibliotek.

Sytuacja komplikuje się jeszcze bardziej gdy pracujemy przy kilku projektach jednocześnie. Jeden z projektów tworzony jest przy pomocy Django w wersji 1.11, a drugi z Django 2.1.

Jak rozwiązać ten problem?

Środowiska wirtualne – rozwiązanie

Rozwiązaniem tego problemu w Pythonie są środowiska wirtualne.

Idea

Idea środowisk wirtualnych jest całkiem prosta. Są to oddzielone od siebie środowiska programistyczne.

Programując w danym środowisku wirtualnym instalujemy w nim jedynie potrzebne nam biblioteki i pakiety.

Workflow

Rozpoczynając nowy projekt powinieneś od razu utworzyć środowisko wirtualne, w którym będziesz pracował nad danym projektem.

Pozwala to utrzymać środowiska wirtualne najmniejszymi jak tylko się da, gdyż instalujesz w nich jedynie to, co jest Ci potrzebne do akurat tego projektu.

Co ważne, znacznie zmniejsza to ryzyko wystąpienia konfliktu wersji i piekła zależności.

Jak używać?

W najnowszych wersjach Pythona pakiet do zarządzania środowiskami wirutalnymi (venv) jest już wbudowany i dostępny od razu po instalacji. Starsze wersje wymagać będa instalacji za pomocą pakietu pip.

W celu utworzenia środowiska wirtualnego posłuży nam komenda wykonana w linii poleceń:

$ python3 -m venv nazwa_srodowiska

Użyte wcześniej polecenie w katalogu wykonania utworzy folder z nazwą środowiska.

Następnie trzeba aktywować środowisko wirtualne.

W systemach z rodziny UNIX można to zrobić za pomocą polecenia:

$ source nazwa_srodowiska/bin/activate

W systemach firmy Microsoft użyj do tego polecenia:

> .\nazwa_srodowiska\Scripts\activate.bat

Po aktywacji środowiska przed znakiem zachęty w nawiasie pojawi się nazwa środowiska:

$ source nazwa_srodowiska/bin/activate
(nazwa_srodowiska) $ python

W tym momencie możesz już pracować w środowisku wirtualnym. Jeżeli chcesz zainstalować pakiet w danym środowisku po prostu zrób to komendą pip install.

Po skończeniu pracy z danym środowiskiem możesz dezaktywować środowisko poleceniem:

(nazwa_srodowiska) $ deactivate
$ 

Alternatywne środowiska wirutalne

Narzędzie venv wbudowane w Pythona jest jednym z prostszych jeżeli chodzi o środowiska wirtualne.

Do pracy z nimi możesz wybrać kilka innych alternatyw

Conda

Narzędzie do zarządzania środowiskami szczególnie znane w świecie data science.

Conda działa na wyższym poziomie niż Python. Venv pozwalał na stworzenie środowisk w zainstalowanej wersji Pythona, wszystkie środowiska miały tę samą wersję języka.

W przypadku Condy tworząc środowisko możemy zainstalować w nim konkretną wersję Pythona. Co więcej, pozwala ona instalować również biblioteki z innych języków.

Pipenv

Pipenv jest narzędziem, które w Pythonowych realiach próbuje zastosować funkcjonalności takich narzędzi jak npm.

Jak nazwa wskauje program ten łączy w sobie funkcje narzędzia pip i środowiska wirtualne.

Pipenv usprawnia workflow przy tworzeniu aplikacji i ma duże szanse niebawem stać się domyślnym narzędziem do zarządzania środowiskami.

Podsumowanie

W tym artykule przedstawiłem Ci zupełne podstawy środowisk wirtualnych.

Chciałem pokazać Ci to narzędzie, które powinno być używane przez każdego programistę Pythona.

Bardzo polecam Ci wykorzystywanie środowisk wirtualnych w każdym Twoim projekcie.

Zachęcam Cię również do przeczytania innych artykułów z cyklu Nauka Podstaw Pythona oraz do pobrania dokumentu „20 przydatnych bibliotek w Pythonie” ze strony głównej 😉

Dziękuję Ci za przeczytanie tego artykułu. Mam nadzieję, że wykorzystasz środowiska wirtualne w swojej pracy 🙂

Pozdrawiam!

Kamil Kwapisz

Jeśli chcesz być na bieżąco z najnowszymi materiałami, polub nasz fanpage na Facebooku:

https://www.facebook.com/kamil.kwapisz.python

Dodatkowe materiały:

Exit mobile version