Всем привет!
В этой статье рассмотрим создание и использование виртуальной среды в Python. Если Вы еще не программируете, самое время начать :)
Спокойствие, виртуальная среда не страшный неприступный монстр: все проще, чем вы думаете. Давайте разбираться!
Для начала определимся, зачем нужно виртуальное окружение. Тут все просто. В работе появляются разные проекты, под каждый проект нужны разные зависимости, свой набор библиотек, то есть своя сборка того же Python. Виртуальное окружение как бы изолирует Python под проект, позволяет одновременно держать несколько сборок Python и работать с ними. Но зачем изолировать Python с ограниченным числом библиотек? Разве больше не значит лучше?
Представьте ситуацию: вы работаете с проектом 1, в котором используете библиотеку А версии 1.1.1. Работа на время завершена, клиент доволен, проект отправляется в архив, а вы беретесь за проект 2. Но по условиям проекта или по иным соображениям Вам нужна библиотека А версии 2.1.0. Не проблема, возьмем, переустановим и продолжим работу. Проблема возникает в момент, когда клиент возвращает первый проект на доработку: Вам необходимо иметь одновременно обе версии библиотеки А. К сожалению, Python не умеет различать версии библиотек в каталоге site-packages и продолжит работу с последней установленной версией. Такой расклад не всегда приемлем.
site-packages - каталог хранения сторонних библиотек. Расположен он относительно каталога Python: \Python\Lib\site-packages
И тут на ум приходит мысль изолировать питон для каждого проекта. Меньше манипуляций с Python = меньше временные затраты, меньше ошибок, выше эффективность программиста.
Создание виртуального окружения
Предполагаю, что на машине есть доступ к интернету и установлен Python. Если нет, смотри статью "Python: компьютер с ограниченным доступом в интернет", которая выйдет через неделю.
1. Открываем Power Shell или Command Window (см. Power Shell)
2. Проверяем, последняя ли версия библиотеки venv одним из трех вариантов:
pip install venv
python -m pip install venv
путь_к_папке_с_питоном/python.exe -m pip install venv
Если установлена не последняя версия, она обновится автоматически.
3. Создаем папку под виртуальное окружение. Расположите ее рядом с проектом, чтобы было легче ориентироваться во множестве папок.
Создать папку можно вручную, а можно с использованием командной строки
mkdir путь/к/вашей/создаваемой/папке
4. Создаем виртуальное окружение:
python -m venv путь/к/папке/где/будет/виртуальное/окружение
Готово!
Venv создал отдельное виртуальное окружение. Чтобы проверить, что оно действительно установлено, посмотрим папку, в которую планировалось поместить его. Каталог будет иметь подобную структуру:
│ pyvenv.cfg
│
├───Include
├───Lib
│ └───site-packages
│ ├───pip
│ ├─── ....
└───Scripts
activate
activate.bat
Activate.ps1
deactivate.bat
easy_install-3.8.exe
easy_install.exe
pip.exe
pip3.8.exe
pip3.exe
python.exe
pythonw.exe
Что находится в этих папках?
- Scripts – файлы, которые взаимодействуют с виртуальной средой;
- include – С-заголовки, компилирующие пакеты Python;
- lib – копия версии Python вместе с папкой «site-packages», в которой установлена каждая зависимость.
Итого, что мы имеем?
"Голый" Python. В нем нет никаких сторонних библиотек. Не верите, давайте убедимся:
1. Вне виртуальной среды: запускаю Python, импортирую библиотеку numpy. Успешно.
2. Внутри виртуальной среды: запускаю Python, импортирую библиотеку numpy. Неудача: такой библиотеки нет.
Как установить туда что-то?
Весьма просто. Тут работают те же законы, что и вне виртуальной среды:
pip install имя_библиотеки
python -m install имя_библиотеки
путь_к_питону/python.exe -m pip install имя_библиотеки
Включение и выключение виртуальной среды
Но для работы в виртуальном окружении необходима его активация:
/путь/к/виртуальному/окружению/Scripts/activate
Если все успешно, Вы увидите слева в круглых скобках имя виртуальной среды:
Если возникли проблемы, попробуйте следующее: откройте Power Shell от имени администратора и проделайте следующее, а зачем вернитесь к активации виртуального окружения:
Пуск -> Power Shell -> Open as Administrator -> при необходимости ввести логин/пароль -> set-executionpolicy RemoteSigned -> согласится с предлагаемым (Y)
Выход из виртуальной среды прост: необходимо просто набрать слово deactivate. После деактивации обращение к Python будет происходить как обычно к версии указанной в системных переменных.
Более подробная информация в справке по venv (на английском).
Сохраняйте статью в закладки, чтобы быстро вспомнить о создании виртуального окружения :)
Что-то не работает? Пишите в комментариях, будем разбираться.
Хорошего дня :)