Pierwsze kroki ze środowiskami wirtualnymi w Pythonie

W tym artykule dowiesz się, jak rozpocząć pracę ze środowiskami wirtualnymi w Pythonie, zarówno w systemach operacyjnych Windows, jak i Linux.

Kiedy zaczynasz pracę nad wieloma projektami w lokalnym środowisku programistycznym, często napotykasz problemy z zależnościami. Tworzenie środowisk wirtualnych dla każdego projektu może pomóc w lepszym zarządzaniu zależnościami i wymaganiami projektu.

Aby wykorzystać zalety środowisk wirtualnych w Pythonie, nauczmy się tworzyć i aktywować środowiska wirtualne. 👩🏽‍💻

Czym są środowiska wirtualne?

Środowiska wirtualne to izolowane i niezależne środowiska, które zawierają kod i zależności projektu.

Ale dlaczego warto korzystać ze środowisk wirtualnych?

Cóż, wirtualne środowiska pozwalają na instalowanie i używanie różnych wersji tych samych bibliotek dla różnych projektów. Korzystanie ze środowisk wirtualnych zapewnia również brak istotnych zmian, gdy dwa lub więcej projektów korzysta z różnych wersji. Zrozummy to bardziej szczegółowo.

Instalowanie pakietów w Pythonie

Standardowa biblioteka Pythona jest dostarczana z kilkoma przydatnymi modułami do testowania jednostkowego, interakcji z systemem operacyjnym, pracy z datami i godzinami i nie tylko.

Jednak podczas pracy nad projektami w Pythonie często będziesz musiał zainstalować inne pakiety — opracowane przez społeczność Pythona. Dotyczy to zwłaszcza aplikacji, takich jak web scraping do zbierania danych, uczenie maszynowe i aplikacje internetowe.

Aby zainstalować i zarządzać tymi pakietami, możesz użyć conda lub pip.

Każdy projekt wymaga określonego zestawu pakietów, które należy zainstalować. Jednak po zainstalowaniu wszystkich pakietów w środowisku programistycznym na komputerze lokalnym wszystkie projekty współużytkują pakiety zainstalowane globalnie.

Więc dlaczego jest to problem?

Cóż, możesz mieć N pakietów w swoim środowisku programistycznym. Jednak projekt, nad którym obecnie pracujesz, może wymagać tylko 3 z nich. Gdy wszystkie Twoje projekty współdzielą wspólne instalacje, bardzo trudno jest określić, który z projektów wymaga którego z zainstalowanych pakietów — zależności skojarzonych z każdym projektem.

Jest jeszcze jedno ograniczenie tego podejścia. Załóżmy, że masz projekt Django 2.2 w swojej bibliotece projektu. Decydujesz się rozpocząć pracę nad projektem, który używa Django 4. Instalujesz więc najnowszą wersję Django w tym samym środowisku programistycznym.

Co dzieje się z istniejącą instalacją?

Jest usuwany i zastępowany przez zainstalowaną wersję Django. W nowszych wydaniach stabilnych niektóre funkcje mogły zostać przestarzałe. Twoje wcześniejsze projekty Django mogą nie działać zgodnie z oczekiwaniami.

Podsumowując naszą dotychczasową dyskusję: zarządzanie zależnościami staje się trudne, gdy wszystkie pakiety są instalowane we wspólnym środowisku, ponieważ projekty wymagają do działania własnego zestawu bibliotek.

Jak działają środowiska wirtualne

Do tej pory widzieliśmy wyzwania związane z instalowaniem pakietów w globalnym środowisku programistycznym (instalacje ogólnosystemowe). To motywuje nas do zrozumienia, w jaki sposób środowiska wirtualne radzą sobie z tym ograniczeniem.

Podczas tworzenia i aktywowania środowiska wirtualnego dla projektów w języku Python możesz zainstalować tylko te pakiety, które są wymagane dla bieżącego projektu.

Wracając do przykładu projektów Django, w środowiskach wirtualnych można uruchomić zarówno projekty Django 2.2, jak i Django 4 – bez żadnych konfliktów. Dzieje się tak, ponieważ instalacje Django nie są już instalacjami ogólnosystemowymi, ale są ograniczone do środowisk wirtualnych odpowiednich projektów.

W skrócie: środowiska wirtualne to izolowane środowiska, które zawierają zarówno kod, jak i zależności projektu.

Zalety środowisk wirtualnych

Teraz, gdy wiesz już, jak działają środowiska wirtualne w Pythonie, wymieńmy zalety ich używania:

  • Środowiska wirtualne zapewniają izolowane środowisko programistyczne dla poszczególnych projektów, co pozwala nam instalować tylko pakiety wymagane przez określony projekt.
  • Ponieważ wirtualne środowiska projektów są zarówno niezależne, jak i izolowane, różne projekty mogą korzystać z różnych wersji tej samej biblioteki — w zależności od wymagań. W środowiskach wirtualnych nie musisz martwić się o uprawnienia systemowe, aby zainstalować biblioteki i skonfigurować środowisko programistyczne.
  • Po zainstalowaniu pakietów w środowisku wirtualnym można przechwycić zależności projektu w pliku Requirements. txt. Dzięki temu inni programiści mogą replikować rozwój i środowisko projektu oraz instalować wymagane pakiety za pomocą jednego polecenia.

Do tej pory poznałeś, jak działają środowiska wirtualne i jakie są zalety ich używania. Przyjrzyjmy się niektórym popularnym narzędziom, których możesz używać do tworzenia środowisk wirtualnych i zarządzania nimi w Pythonie.

#1. Wirtualne środowisko

Virtualenv to jedno z powszechnie używanych narzędzi do tworzenia i zarządzania środowiskami wirtualnymi dla projektów Python. Podzbiór funkcjonalności virtualenv jest dostępny w pakiecie venv. Jednak pakiet virtualenv jest szybszy i rozszerzalny w porównaniu do venv.

#2. Pipenv

Dzięki pipnev masz zarówno funkcjonalność środowiska wirtualnego virtualenv, jak i możliwości zarządzania pakietami pip. Używa zarządza plikami pipfile do zarządzania zależnościami projektu w środowisku wirtualnym za pomocą.

Możesz wypróbować pipenv bezpośrednio z przeglądarki na tym placu zabaw Pipenv.

#3. Conda

Jeśli używasz dystrybucji Pythona Anaconda do programowania, możesz użyć conda do zarządzania pakietami i do tworzenia środowisk wirtualnych.

Aby dowiedzieć się więcej, zapoznaj się z tym obszernym przewodnikiem dotyczącym zarządzania środowiskami za pomocą conda.

#4. Poezja

Poetry to narzędzie do zarządzania pakietami, które pozwala zarządzać zależnościami we wszystkich projektach Pythona. Aby zacząć korzystać z Poetry, musisz mieć zainstalowany Python 3.7 lub nowszy.

#5. Venv

Jak wspomniano, venv oferuje podzbiór funkcjonalności virtualenv, ale ma tę zaletę, że jest wbudowany w standardową bibliotekę Pythona, począwszy od Pythona 3.3.

Jest łatwo dostępny wraz z instalacją Pythona — i nie wymaga instalacji zewnętrznych pakietów. Użyjemy go w tym samouczku do tworzenia i pracy ze środowiskami wirtualnymi.

Jak stworzyć wirtualne środowisko Pythona w Ubuntu?

💬 Aby śledzić resztę tego samouczka, musisz mieć lokalną instalację Pythona 3. Upewnij się, że używasz Pythona 3.5 lub nowszej wersji.

W tej sekcji opisano kroki tworzenia i aktywowania środowisk wirtualnych na komputerze z systemem Ubuntu Linux. Te same kroki można również wykonać w innych dystrybucjach Linuksa.

Dla łatwiejszego zarządzania stwórzmy katalog projektu i cd do niego; Stworzymy venv w tym katalogu.

$ mkdir my_project
$ cd my_project

Ogólna składnia do tworzenia wirtualnego środowiska dla twojego projektu w Pythonie to python3 -m venv . Po uruchomieniu tego polecenia w bieżącym katalogu roboczym zostanie utworzone środowisko wirtualne o nazwie my_env:

$ python3 -m venv my_env

Jak aktywować i instalować pakiety w środowisku wirtualnym?

Po utworzeniu środowiska wirtualnego możesz je aktywować i zainstalować w nim wymagane pakiety. Aby aktywować środowisko wirtualne, możesz uruchomić następujące polecenie:

$ source my_env/bin/activate

Po aktywowaniu środowiska wirtualnego możesz uruchomić polecenie pip list, aby uzyskać listę zainstalowanych pakietów:

$ pip list

Jak dotąd nie zainstalowaliśmy żadnego pakietu, więc powinieneś być w stanie zobaczyć setuptools i pip—instalowane domyślnie—w każdym z utworzonych środowisk wirtualnych.

Instalacja pip w środowisku wirtualnym pozwala na instalację pakietów potrzebnych do konkretnego projektu; dlatego masz niezależne środowisko programistyczne dla każdego projektu.

Teraz, po aktywacji środowiska wirtualnego, możesz zainstalować w nim pakiety specyficzne dla projektu za pomocą pip. Jako przykład zainstalujmy żądania Pythona, jeden z najczęściej pobieranych pakietów Pythona, który zapewnia kilka przydatnych funkcji do wysyłania żądań HTTP do pracy z internetowymi interfejsami API.

$ pip install requests

Gdy zainstalujesz bibliotekę żądań, zobaczysz, że biblioteka żądań jest instalowana wraz ze wszystkimi wymaganymi przez nią pakietami.

$ pip list

Możesz użyć polecenia pip freeze i przekierować dane wyjściowe do pliku Requirements.txt, jak pokazano:

$ pip freeze > requirements.txt

Jeśli zbadasz zawartość bieżącego katalogu projektu, zobaczysz, że został utworzony plik Requirements. txt.

$ ls
# my_env requirements.txt

Środowisko wirtualne można dezaktywować po zakończeniu pracy nad projektem, uruchamiając następujące polecenie:

$ deactivate

Jak stworzyć wirtualne środowisko Pythona w systemie Windows

Ogólnie do programowania preferowane jest środowisko Linux. Jeśli korzystasz z komputera z systemem Windows, możesz rozważyć użycie podsystemu Windows dla systemu Linux (WSL) do skonfigurowania środowiska terminala Ubuntu na potrzeby programowania lokalnego.

Jeśli korzystasz z komputera z systemem Windows, możesz użyć programu Windows PowerShell lub wiersza polecenia i utworzyć środowiska wirtualne za pomocą następującego polecenia:

> python -m venv <path-to-venv>

Jak aktywować środowisko wirtualne

Aktywacja środowisk wirtualnych na komputerze z systemem Windows różni się w zależności od tego, czy pracujesz w wierszu polecenia, czy w programie Windows PowerShell.

Jeśli jesteś w wierszu polecenia, uruchom następujące polecenie, aby aktywować środowisko wirtualne:

> <path-to-venv>Scriptsactivate.bat

Alternatywnie, jeśli używasz programu Windows PowerShell, uruchomienie tego polecenia spowoduje aktywację środowiska wirtualnego:

> <path-to-venv>ScriptsActivate.ps1

Możesz zainstalować wszystkie wymagane pakiety w środowisku wirtualnym.

Aby dezaktywować środowiska wirtualne, możesz uruchomić polecenie dezaktywacji — zarówno w wierszu polecenia, jak i w programie Windows PowerShell.

Wniosek

W tym artykule omówiliśmy ograniczenia instalacji ogólnosystemowych i sposób, w jaki utrudniają one zarządzanie zależnościami w projektach w języku Python. Środowiska wirtualne w Pythonie umożliwiają lepsze zarządzanie zależnościami, zapewniając jednocześnie izolowane środowisko programistyczne dla poszczególnych projektów.

Wśród powszechnie używanych narzędzi do tworzenia i zarządzania środowiskami wirtualnymi w Pythonie nauczyłeś się korzystać z venv — wbudowanego w standardową bibliotekę Pythona do tworzenia i aktywowania środowisk wirtualnych.

Wewnątrz dedykowanego środowiska wirtualnego projektu można zainstalować wersje bibliotek specyficzne dla projektu. Te wymagania można następnie uchwycić w pliku Requirements.txt, który umożliwia innym programistom łatwe replikowanie środowiska projektu.

Kiedy rozpoczynasz kolejny projekt w Pythonie, pamiętaj, aby korzystać ze środowisk wirtualnych, aby lepiej zarządzać zależnościami. Udanego kodowania!🎉