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 importuPakiet żą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-venvNastępnie przechodzimy do katalogu, w którym chcesz tworzyć katalog wirtualnego środowiska. Dla mnie jest ~/projekt1
$ CD ~/Project1Utwó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 -envUwaga: 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ł:
$ source ~/Project1/My-Env/bin/Aktywuj
Jeśli używasz Bash.>.\ 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 InstalowanieTak 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.
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.