Wirtualne środowiska w Python 3

Wirtualne środowiska w Python 3
Jak większość ludzi, nienawidzę instalowania niepotrzebnych pakietów na mojej stacji roboczej. Po zakończeniu ich, odinstalowanie ich nigdy nie wystarczy. Pakiety pozostawiają tony folderów i plików. Wymagają wielu innych (niejasnych) pakietów również pozostawionych po rzeczy. Powoli, ale na pewno te rzeczy gromadzą.

Starsze zależności

Starsze pakiety mogą pozostać wokół, a Twój kod Python z radością ich użyje. Nie stanowi to problemu, jeśli twoje skrypty Pythona mają działać lokalnie, a nie do celów przemysłowych. Naukowcy danych, studenci, a nawet zwykli ludzie automatyzacja ich codziennych zadań mogą po prostu używać starszych pakietów bez większego problemu.

Problem zaczyna się, gdy wysyłasz kod do produkcji. Kiedy to zrobisz, są szanse, że po prostu wyślesz swój główny skrypt, a nie wszystkie zależności pakietu. Na przykład, jeśli napisałeś mikrousługę do wysłania jako funkcja AWS Lambda, kilka pierwszych wierszy może zaimportować moduł żądania takiego:

żądanie importu

Pakiet żądania dostarczony przez AWS Lambda będzie inny od Twojego starszego, w wyniku czego program może zawieść.

Konflikty

Konflikty mogą również pojawić się na zdjęciu, na którym różne projekty używają różnych wersji tego samego pakietu. Może niektóre ze starszych projektów potrzebują starszych pakietów PIP. Ale możesz potrzebować nowszego pakietu do innych projektów. Uruchamianie instalacji PIP -u uaktualni pakiet w systemie operacyjnym, powodując problemy po powrocie do utrzymania starszych projektów.

Python Virtual Environments

Jeśli używasz dowolnej wersji Pythona powyżej 3.5, możesz użyć wbudowanego modułu o nazwie Venv, aby stworzyć tak zwane środowiska wirtualne Python. To, co robi ten moduł, to utworzenie izolowanego folderu lub katalogu, w którym mogą żyć wszystkie pakiety PIP i inne zależności. Folder zawiera również skrypt „aktywuj”. Ilekroć chcesz używać określonego środowiska wirtualnego, po prostu uruchom ten skrypt, po którym można uzyskać dostęp tylko do pakietów zawartych w tym folderze. Jeśli uruchomisz instalację PIP, pakiety zostaną zainstalowane w tym folderze i nigdzie indziej. Po zakończeniu korzystania z środowiska możesz po prostu „dezaktywować”, a następnie tylko globalne pakiety PIP będą dostępne.

Jeśli używasz Ubuntu 18.04 i więcej, nie musisz nawet instalować menedżera pakietów PIP w całym systemie. PIP może istnieć tylko w twoim wirtualnym środowisku, jeśli wolisz to w ten sposób.

Instalowanie VENV i tworzenie wirtualnych środowisk

Ubuntu 18.04 LTS wychodzi z pudełka z Python 3.6.X, ale moduł Python Venv nie jest zainstalowany, ani PIP. Zainstalujmy tylko Venv.

$ apt Zainstaluj Python3-venv

Następnie przechodzimy do katalogu, w którym chcesz tworzyć katalog wirtualnego środowiska. Dla mnie jest ~/projekt1

$ CD ~/Project1

Utwórz swój Venv za pomocą następującego polecenia, zauważ, że MY-ENV to tylko nazwa tego środowiska, możesz nazwać to, co chcesz:

$ python3 -m venv my -env

Uwaga: niektóre instalacje Python3, takie jak te dostępne w systemie Windows, nazywasz interpreter Python za pomocą tylko Pythona, a nie Python3, ale zmienia się z systemu na system. Ze względu na konsystencję będę używać tylko Python3.

Po zakończeniu wykonania polecenia zauważysz nowy folder ~/projekt1/my-evn. Aby aktywować wirtualne środowisko MY-ENV, będziesz musiał:

  1. Uruchomić,
    $ source ~/Project1/My-Env/bin/Aktywuj Jeśli używasz Bash.
    Istnieją alternatywne skrypty zwane Aktywuj.ryby i aktywuj.CSH dla osób używających odpowiednio ryb i skorupek CSH.
  2. W systemie Windows można wywołać skrypt, uruchamiając:
    >.\ My-env \ Scripts \ Aktywuj.nietoperz Jeśli używasz wiersza polecenia lub,
    >.\ My-env \ Scripts \ Aktywuj.PS1 Jeśli używasz PowerShell.

Korzystanie z środowisk wirtualnych

Po pomyślnym uruchomieniu skryptu zauważysz, że podpowiedź zmienia się w coś takiego jak pokazane poniżej, możesz teraz zainstalować pakiety za pomocą PIP:

(MY-ENV) $ PIP3 Instalowanie
## Możemy wymienić zainstalowane pakiety za pomocą polecenia „PIP Freeze”
(My-Env) $ PIP3 Freeze
certifi == 2018.10.15
Chardet == 3.0.4
idna == 2.7
PKG-Resources == 0.0.0
żądania == 2.20.1
urllib3 == 1.24.1

Tak długo, jak środowisko wirtualne jest aktywne (jak wskazano w wierszu), wszystkie pakiety będą zapisywane tylko w katalogu wirtualnego środowiska (MY-ENV), bez względu na to, gdzie jesteś w systemie plików.

Aby wydostać się z wirtualnego środowiska, możesz wpisać dezaktywację do monit. Możesz zauważyć, że nowe zainstalowane pakiety nie będą wyświetlane w globalnej instalacji PIP.

Aby pozbyć się wirtualnego środowiska, po prostu usuń folder MY-ENV, który został utworzony po uruchomieniu modułu. Możesz stworzyć tyle z tych środowisk, ile chcesz.

Wniosek

W module Venv środowiska wirtualne są teraz dostępne jako standardowa funkcja Pythona, szczególnie jeśli instalujesz z Python.org. Wcześniej mieliśmy wiele implementacji stron trzecich o nazwie Virtualenv, Pyenv itp.

Dało to powstanie coraz bardziej rozdętego oprogramowania, takiego jak Anaconda, szczególnie popularna wśród naukowców danych. Dobrze jest wreszcie mieć uproszczone narzędzie do zarządzania pakietami Python bez konieczności instalowania wielu innych niezwiązanych śmieci. Możesz przeczytać więcej o Venv tutaj.