python debug

Koduj więcej, debuguj mniej w środowiskach wirtualnych – Python.

Chroń się przed nieoczekiwanymi i niepożądanymi niespodziankami, używając środowiska wirtualnego w Pythonie.

Jeśli kiedykolwiek podzieliłeś się z przyjacielem prostym kodem, złożoną aplikacją lub czymś pomiędzy, to prawdopodobnie wypowiedziałeś zdanie „Cóż, u mnie działa”. Bez względu na to, jak zaawansowane stają się komputery, wydają się powtarzać problemy związane z różnicami w konfiguracji lub instalacji dowolnych dwóch maszyn. Trwają ciągłe próby rozwiązania tego problemu, a dla programistów Pythona jednym z najlepszych sposobów zapobiegania temu jest korzystanie ze środowisk wirtualnych.

Środowisko wirtualne w Pythonie

  • to tymczasowe dostosowanie sposobu, w jaki Python uruchamia kod. 
  • nie jest maszyną wirtualną ani pojemnikiem. 
  • manipuluje zmiennymi środowiskowymi twojej powłoki, dzięki czemu możesz wykonać jedną znaną wersję Pythona przy użyciu lokalnego zestawu modułów.

Życie bez środowisk wirtualnych

Bez środowiska wirtualnego, kiedy wpisujesz python lub python3 w swoim terminalu, uruchamiasz dowolną wersję Pythona zainstalowaną na twoim komputerze:

$ python --version
Python 2.7.17
$ python3 --version
Python 3.7

W poniedziałek może to być wersja X, ale we wtorek może to być nagle Python Y, jeśli zdarzy ci się zaktualizować komputer w nocy. Dość często nie stanowi to problemu, ponieważ Python zazwyczaj dobrze radzi sobie z kompatybilnością wsteczną. Jednak niektóre komputery zachowują bardzo stare wersje języka Python w celu zapewnienia wsparcia dla starszych wersji, a niektórzy programiści piszą na najwyższej wersji, chcąc korzystać z najnowszych funkcji języka. Może to spowodować nieoczekiwane problemy.

Ten sam problem dotyczy pojedynczych modułów Pythona. Możesz zainstalować wersję Z modułu ExamplePyMod, opracować kod i opublikować aplikację online. Jeśli ktoś, kto rok temu zainstalował wersję X lub Y ExamplePyMod, spróbuje uruchomić Twój kod, mogą pojawić się nieoczekiwane problemy ze zgodnością. Częstym problemem dla programistów jest również przyjmowanie modułu za pewnik. Jeśli używasz modułu tak często, że praktycznie myślisz o nim jako o części Pythona, prawdopodobnie zapomnisz dodać moduł jako wymaganie do uruchomienia aplikacji.

W obu przypadkach, aby znaleźć główną przyczynę błędów, musisz przeprowadzić audyt i zaktualizować swój system lub system użytkownika, tak aby oboje korzystali z tych samych wersji.

Korzystanie ze środowisk wirtualnych w Pythonie

Środowisko wirtualne tymczasowo przekierowuje wywołanie języka Python do określonej wersji języka Python. Na przykład użycie wersji Python 3.7 do stworzenia środowiska wirtualnego gwarantuje, że Python wskazuje na Python 3.7, a nie na Python 2.7, Python 3.8 lub cokolwiek innego, co możesz mieć na swojej maszynie deweloperskiej.

Na przykład, oto wirtualne środowisko utworzone w Pythonie 3.7:

# bez środowiska wirtualnego
$ python --version
Python 2.7.17
# środowisko wirtualne
$ python3.7 -m venv example37/venv
$ cd example37
$ source ./venv/bin/activate
(venv)$ python
Python 3.7
(venv)$ deactivate
# bez środowiska wirtualnego
$ python --version
Python 2.7.17

Korzystanie z modułów w środowisku wirtualnym

Moduły są instalowane lokalnie w środowisku wirtualnym. Kiedy pracujesz w środowisku wirtualnym, możesz zainstalować ExamplePyMod i używać go przez cały dzień, ale zniknie, gdy opuścisz środowisko wirtualne.

Oto proces instalacji modułu:

# bez środowiska wirtualnego
$ python3
>>> import flask
ModuleNotFoundError: No module named 'flask'
# środowisko wirtualne
(venv)$ python -m pip install flask
[...]
(venv) bash-4.3$ python -m pip install flask
Collecting flask
  Downloading [...]
Successfully installed [...]
(venv)$ python
>>> from flask import Flask
>>> app = Flask(__name__)
(venv)$ deactivate
# znowu bez środowiska wirtualnego
$ python3
>>> import flask
ModuleNotFoundError: No module named 'flask'

Przywracanie środowiska wirtualnego za pomocą pip

Może się wydawać, że instalacja i reinstalacja wymaganych modułów za każdym razem, gdy siadasz do kodu, wymaga wiele dodatkowej pracy. W rzeczywistości system środowiska wirtualnego zachowuje moduły, których używasz, w pliku Requirements.txt w katalogu projektu. Możesz przetwarzać  requirements.txt za pomocą pip, aby obsługiwać automatyczne instalacje wszystkich zależności:

$ cd myproject
$ source ./venv/bin/activate
(venv)$ python -m pip install -r requirements.txt
Installed [...]
$ python
>>> from flask import Flask
>>> import examplepymod

Python również buforuje wymagane moduły, więc możesz zacząć działać w mgnieniu oka.

Przegląd środowiska wirtualnego

Polecenie tworzenia wirtualnego środowiska w Pythonie to:

$ python -m venv /directory/venv

Aby aktywować środowisko wirtualne:

$ source ./venv/bin/activate
(venv)$

Aby zainstalować wymagane moduły:

(venv)$ python -m pip install -r requirements.txt

Aby dezaktywować środowisko wirtualne:

(venv)$ deactivate

Środowiska wirtualne są ważną częścią procesu rozwoju języka Python. Naucz się ich używać, aby chronić siebie i swoich użytkowników przed nieoczekiwanymi i niepożądanymi niespodziankami. Krótko mówiąc, korzystaj ze środowisk wirtualnych, aby poświęcić więcej czasu na kodowanie, a mniej na debugowanie!

Leave a Comment