Python

Виртуална среда в Python 3

Виртуална среда в Python 3
Както повечето хора, мразя да инсталирам ненужни пакети на работната си станция. След като приключите с тях, деинсталирането им никога не е достатъчно. Пакетите оставят след себе си тонове папки и файлове. Те изискват много други (неясни) пакети, също оставени след нещата. Бавно, но сигурно тези неща се натрупват на вашата работна станция и макар да не задържат значителна част от дисковото ви пространство, те могат да причинят други проблеми.

По-стари зависимости

По-старите пакети могат да се задържат и вашият код на 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, ще трябва:

  1. Бягай,
    $ source ~ / project1 / my-env / bin / activate ако използвате Bash.
    Има алтернативни скриптове, наречени активиране.риба и активирайте.csh за хора, които използват риба и черупки csh, съответно.
  2. В 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 тук.

Контролирайте и управлявайте движението на мишката между множество монитори в Windows 10
Двоен дисплей на мишката ви позволява да контролирате и конфигурирате движението на мишката между множество монитори, като забавя движенията му близо ...
WinMouse ви позволява да персонализирате и подобрите движението на показалеца на мишката на компютър с Windows
Ако искате да подобрите функциите по подразбиране на показалеца на мишката, използвайте безплатна програма WinMouse. Той добавя още функции, за да ви ...
Бутонът на левия бутон на мишката не работи в Windows 10
Ако използвате специална мишка с вашия лаптоп или настолен компютър, но бутонът на левия бутон на мишката не работи на Windows 10/8/7 по някаква причи...