По-стари зависимости
По-старите пакети могат да се задържат и вашият код на Python с радост ще ги използва. Това не е проблем, ако вашите Python скриптове са предназначени да се изпълняват локално, а не за промишлени цели. Учените по данни, студенти и дори обикновени хора, които автоматизират ежедневната си задача, могат просто да продължат да използват по-старите пакети без особен проблем.
Проблемът започва, когато изпращате кода си до продукцията. Когато направите това, има вероятност просто да изпратите основния си скрипт, а не всички зависимости на пакета. Например, ако сте написали микросервиз, който да бъде изпратен като функция AWS Lambda, първите няколко реда могат да импортират модул за заявка по следния начин:
заявка за вносПакетът за заявки, предоставен от AWS lambda, ще се различава от вашия по-стар и в резултат на това програмата може да се срине.
Конфликти
Може да се появят и конфликти, когато различните проекти използват различни версии на един и същ пакет. Може би някои от вашите по-стари проекти се нуждаят от по-старите пип пакети. Но може да се нуждаете от по-новия пакет за други проекти. Изпълнява се pip install -U
Виртуална среда на Python
Ако използвате която и да е версия на Python над 3.5, можете да използвате вграден модул, наречен venv, за да създадете така наречените Python Virtual Environment. Това, което този модул прави, е да създаде изолирана папка или директория, в която да могат да живеят всички ваши пип пакети и други зависимости. Папката съдържа и скрипт за активиране. Винаги, когато искате да използвате определена виртуална среда, просто стартирате този скрипт, след което могат да бъдат достъпни само пакетите, съдържащи се в тази папка. Ако стартирате pip install, пакетите ще бъдат инсталирани в тази папка и никъде другаде. След като приключите с използването на среда, можете просто да я „деактивирате“ и тогава само глобалните пип пакети ще ви бъдат достъпни.
Ако използвате Ubuntu 18.04 и по-нови версии, дори не е необходимо да инсталирате мениджъра на пакети pip в цялата си система. Pip може да съществува във вашата виртуална среда само ако го предпочитате по този начин.
Инсталиране на venv и създаване на виртуална среда
Ubuntu 18.04 LTS излиза от кутията с Python 3.6.x, но модулът Python venv не е инсталиран, нито pip. Нека инсталираме само venv.
$ apt инсталирайте python3-venvСлед това отиваме в директорията, в която искате да бъде създадена вашата директория за виртуална среда. За мен това е ~ / project1
$ cd ~ / проект1Създайте своя venv със следната команда, забележете, че my-env е само името на тази среда, можете да го наименувате както искате:
$ python3 -m venv my-envЗабележка: Някои инсталации на Python3, като тези, налични в Windows, извиквате интерпретатора на Python, използвайки само python, а не python3, но това се променя от система на система. За последователност ще използвам само python3.
След като командата приключи, ще забележите нова папка ~ / project1 / my-evn. За да активирате виртуалната среда my-env, ще трябва:
- Бягай,
$ source ~ / project1 / my-env / bin / activate
ако използвате Bash.
Има алтернативни скриптове, наречени активиране.риба и активирайте.csh за хора, които използват риба и черупки csh, съответно. - В Windows скриптът може да бъде извикан чрез стартиране:
>.\ my-env \ Scripts \ activate.прилеп
ако използвате командния ред, или,>.\ my-env \ Scripts \ activate.ps1
ако използвате PowerShell.
Използване на виртуална среда
След като стартирате скрипта успешно, ще забележите, че подканата се променя на нещо като показаното по-долу, вече можете да инсталирате пакети с помощта на pip:
(my-env) $ pip3 заявки за инсталиране## Можем да изброим инсталираните пакети с помощта на командата 'pip freeze'
(my-env) $ pip3 замръзване
сертифици == 2018.10.15
chardet == 3.0.4
idna == 2.7
pkg-ресурси == 0.0.0
заявки == 2.20.1
urllib3 == 1.24.1
Докато виртуалната среда е активна (както е указано от подканата), всички пакети ще бъдат запазени само в директорията на виртуалната среда (my-env), независимо къде се намирате във файловата система.
За да излезете от виртуалната среда, можете да въведете деактивиране в подканата и ще се върнете към използването на системната инсталация на Python. Можете да забележите, че новите пакети, които току-що инсталирахме, няма да бъдат показани в глобалната пип инсталация.
За да се отървете от виртуалната среда, просто изтрийте папката my-env, създадена след стартиране на модула. Можете да създадете толкова много от тези среди, колкото искате.
Заключение
С модула venv виртуалните среди вече са на разположение като стандартна функция на Python, особено ако инсталирате от Python.орг. По-рано имахме много реализации на трети страни, наречени virtualenv, pyenv и т.н.
Това породи все повече и повече раздут софтуер като Anaconda, особено популярен сред изследователите на данни. Добре е накрая да имате опростен инструмент за управление на пакети на Python, без да се налага да инсталирате много други несвързани боклуци. Можете да прочетете повече за venv тук.