Python. Виртуальное окружение в Windows
Виртуальное окружение в Python — способ изолировать зависимости (пакеты) для определённого проекта.
Создание виртуального окружения
Создаётся через модуль venv, который идёт в поставке Python 3.
Используется команда «python −m venv» и название директории, в которой будет создано виртуальное окружение.
Использование:
Для активации окружение надо запустить скрипт activate.bat внутри директории с виртуальным окружением. Затем выполнить необходимые операции, допустим установить пакет. По окончанию работы запусить скрипт deactivate.bat .
Допустим, окружение создано в директории e:\home\python\project\.
Виртуальное окружение Python
Virtual Environment (виртуальное окружение) в Python — это инструмент, который позволяет создавать изолированные среды для работы с проектами на Python. Виртуальное окружение содержит свой собственный интерпретатор Python и набор библиотек, которые можно установить и использовать независимо от тех, которые установлены в глобальной системе. Это позволяет избежать конфликтов версий между пакетами и гарантирует, что приложение будет работать так, как задумано, независимо от конфигурации и установки Python на компьютере.
Необходимость такого механизма возникла из-за того, что Python устанавливается глобально в системе. Точно также глобально устанавливаются пакеты PIP, поэтому все модули будут доступны для всех python-программ. Это может вызывать проблемы совместимости, особенно для программ, которым требуются разные версии модулей.
Ещё одной причиной использования виртуального окружения будет тестирование сторонних модулей. Не секрет что очень многие сторонние модули для Python работают очень плохо или с ошибками. Поэтому разработчики обычно следят за чистотой рабочей среды Python, избегая ставить модули глобально.
Важный момент ещё в том, что установка модулей через PIP подразумевает формирование многочисленных связей: модуль может использовать другой модуль, тот в свою очередь ещё несколько.
Чтобы этого избежать, разработчиками Python был придуман механизм виртуального окружения.
Как работает виртуальное окружение Python
Идея очень проста. Вместо использования глобального Python, будет использоваться его локальная копия, которая располагается прямо в каталоге проекта. То есть все необходимые зависимости для запуска вашей программы будут здесь же.
Таким образом, перед тем, как запустить программу, нужно вначале запустить локальную среду Python, который, собственно, и будет выполнять программу.
В Python уже встроены все механизмы для работы с виртуальным окружением и они состоят из нескольких этапов:
- создание виртуального окружения
- его активация
- выполнение программы в его рамках
- деактивация виртуального окружения
Если виртуальное окружение не нужно, то его каталог можно просто удалить.
Создание и запуск виртуального окружения Python
Для создания окружения необходимо запустить консоль в каталоге вашего проекта и выполнить команду:
python -m venv myvenv
Здесь Python использует команду venv , которая создаёт каталог myvenv , в котором будут размещаться все необходимые файлы. Каталог может быть произвольным, чаще всего используют venv , но это дело вкуса.
Перед запуском своей программы, необходимо активировать созданное окружение. Для этого нужно запустить здесь же в консоли команду:
myvenv\Scripts\activate
Это запустит файл activate.bat , который в свою очередь настроит переменные среды на текущий интерпретатор Python, а также локальные pip-модули. В консоли появится подсказка, что-то вроде такого:
(myvenv) user@DESKTOP каталог
Теперь можно запустить свою программу:
python my_prog.py
Она будет выполняться в пределах своего окружения. После того, как программа выполнена, можно деактивировать виртуальное окружение командой:
myvenv\Scripts\deactivate
Либо просто закрыть окно консоли.
Теперь, предположим, ваша программа требует какие-то сторонние модули, которые вы хотите потестировать. Для этого активируем виртуальное окружение и в нём вводим команды для pip:
pip install НУЖНЫЙМОДУЛЬ
Всё как обычно, только в рамках своего окружения. PIP установит модуль локально и он никак не будет влиять на остальных.
Автоматический запуск виртуального окружения
Использование консоли не очень удобно, особенно если вы пишите программы в простом редакторе, вроде NPP, или Sublime Text. Для их запуска потребуется вначале запустить среду, а потом уже программу. Чтобы упростить это дело, можно использовать отдельный bat-файл, например run.bat прямо в каталоге программы:
call myvenv\Scripts\activate.bat python my_prog.py
Такой вариант отлично годится для запуска готовой программы
Virtual Environment при разработке
Во время разработки программ, пользоваться виртуальным окружением может быть не очень удобным. Если у вас много программ, то придётся для каждой из них указывать свой интерпретатор Python (который в myvenv\Scripts ). Поэтому идеальный вариант, когда среда разработки сама понимает существование Virtual Environment текущего проекта и предлагает переключить интерпретатор на доступные (глобальный и локальный).
Так работает Visual Studio Code. Когда вы открываете каталог проекта, то VSCode высветит подсказку, где можно выбрать нужный интерпретатор Python.

После этого работать можно как обычно. Если требуется установить дополнительные модули, то сделать это можно здесь же в консоли VSCode.
Виртуальное окружение
Представь, что у тебя два проекта. Для одного требуется Джанго версии 1.6, а для другого – 1.10. Установленной можно иметь только одну версию пакета.
Пришлось бы каждый раз при переключении между этими проектами удалять одну версию пакета и устанавливать другую. Это неудобно и раздражает. А если таких пакетов много, то терпеть подобное совершенно невозможно.
virtualenv
Решение в установке всех пакетов для каждого проекта отдельно. Модули можно устанавливать не глобально, а в отдельную кучку для каждого проекта.
Такая кучка называется виртуальным окружением.
Умение пользоваться виртуальным окружением – мастхев, без него даже на Девмане будет неуютно.
Прочитай про виртуальные окружения из “Автостопом по Питону”. Там всё, что надо знать про virtualenv.
$ virtualenv название_папки_виртуального_окружения $ source название_папки_виртуального_окружения/bin/activate
virtualenvwrapper
Виртуальное окружение – удобная штука, но добавляет пару действий: при переключении к другому проекту в него нужно зайти, вспомнить, где живёт окружение и активировать его.
Тут помогает virtualenvwrapper: он привносит структуру и порядок в работу с виртуальными окружениями.
Как установить и пользоваться написано по ссылке выше.
venv
Стандартное решение для создания виртуальных окружений в Питоне версии 3.3 и старше. Различия с virtualenv минимальны. Ссылка на документацию.
- Идет в комплекте с Питоном3.
- Считается решением по умолчанию, а значит, меньше проблем с совместимостью.
- Создаёт framework-build Питона вместо обыкновенного для OSX. Такой билд необходим для правильной работы некоторых библиотек, к примеру, matplotlib и pyplot. Подробнее об этом можно почитать здесь.
- Нет надстроек, написанных для virtualenv .
Как создать виртуальное окружение:
$ python3 -m venv --copies /полный/путь/до/папки/виртуального/окружения $ # --copies активирует копирование файлов вместо создания symlinks. С последними не дружит PyCharm. $ # в Ubuntu доступна также короткая запись — alias pyvenv $ pyvenv папка/для/виртуального/окружения
Если удобного псевдонима в ОС нет, то его можно создать самостоятельно. Добавь себе в .bashrc (для Linux) или в .bash_profile (для Маков) строку:
pyvenv() /usr/local/bin/python3 -m venv --copies ./$1; >
Бонус для маководов
Если у тебя Макось, то в качестве оболочки терминала рекомендую iTerm2. Он умеет много полезного по сравнению с обычным терминалом.
Например, можно повесить на горячую клавишу создание нового окна и активацию виртуального окруженения.
У меня так: нажимаю ⌃⌘D – и я уже в папке Девмана с активированным окружением. Красота!
Это делается в настройках, вкладке Profiles. Вот как у меня:
Попробуйте бесплатные уроки по Python
Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.
Переходите на страницу учебных модулей «Девмана» и выбирайте тему.
Python (Русский)/Virtual environment (Русский)
Состояние перевода: На этой странице представлен перевод статьи Python/Virtual environment. Дата последней синхронизации: 28 мая 2023. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.
virtualenv — это инструмент, используемый для создания изолированного рабочего пространства для приложения Python. Он даёт некоторые преимущества: например, возможность локальной установки модулей, экспорта рабочей среды и выполнения программы Python внутри этого окружения.
Обзор
Виртуальное окружение (virtual environment) — это каталог, в который устанавливаются некоторые исполняемые файлы и скрипты. Среди файлов есть python для выполнения скриптов и pip для установки других модулей в окружении. Также есть скрипты для активации окружения в различных командных оболочках (для bash, csh и fish). По сути, виртуальное окружение имитирует полную системную установку Python и всех необходимых модулей, не вмешиваясь в работу системы, на которой будет запускаться приложение.
В 2017 году был опубликован Pipenv, который управляет всеми вышеперечисленными инструментами: виртуальными окружениями интерпретаторов python, зависимостями пакетов, их активацией и блокировкой версий в Pipfile.
Установка
Python 3.3+ поставляется с модулем venv. Для более старых версий Python можно использовать сторонний инструмент virtualenv.
Пакеты
Установите один из следующих пакетов:
- Python 3.3+: python
- Python 3: python-virtualenv
- Python 3: python-pipenv
Использование
Все три инструмента похожи.
Создание
Используйте venv или virtualenv для создания виртуального окружения в каталоге вашего проекта. Не забудьте исключить каталог venv из вашей системы контроля версий — для его восстановления достаточно копии pip freeze .
venv
Он входит в состав python (3.3+):
$ python -m venv envname
virtualenv
$ virtualenv envname
Активация
Для активации виртуального окружения используйте один из имеющихся скриптов для вашей командной оболочки. Пример для bash:
$ source envname/bin/activate (envname) $
Теперь команды python и pip будут запускаться и управлять пакетами только внутри виртуального окружения, не затрагивая систему.
Для выхода из виртуального окружения выполните функцию, которую создал скрипт активации:
(envname) $ deactivate
Версии Python
По умолчанию виртуальные окружения создаются с использованием стандартного системного Python. Файл bin/python — это просто символическая ссылка на системный python:
$ ls -l envname/bin/python lrwxrwxrwx 1 foo foo 15 янв 29 18:48 envname/bin/python -> /usr/bin/python
Если вы хотите использовать другую версию Python внутри виртуального окружения, можно использовать опцию -p / —python у virtualenv:
$ virtualenv -p 3.8 envname $ ls -l envname/bin/python lrwxrwxrwx 1 foo foo 18 янв 29 18:48 envname/bin/python -> /usr/bin/python3.8
Также можно использовать pypy3 :
$ virtualenv -p pypy3 envname
virtualenvwrapper
virtualenvwrapper позволяет более удобно управлять виртуальными окружениями через командную строку, предоставляя несколько полезных команд для создания, активации и удаления виртуальных окружений. Этот пакет является обёрткой для python-virtualenv .
Установка
export WORKON_HOME=~/.virtualenvs source /usr/bin/virtualenvwrapper.sh
Строка source /usr/bin/virtualenvwrapper.sh может несколько замедлить запуск новой командной оболочки. Для решения проблемы можно использовать source /usr/bin/virtualenvwrapper_lazy.sh , который загрузит virtualenvwrapper только при первом обращении к нему.
Перезапустите консоль для применения изменений. Каталог WORKON_HOME будет создан автоматически.
Использование
Подробности можно почитать в официальной документации.
Создание виртуального окружения (все опции командной строки, кроме -a , -i , -r и -h , передаются в virtualenv, так что можно использовать опцию -p для выбора нужной версии Python):
$ mkvirtualenv envname
Активация виртуального окружения:
$ workon envname
Установка пакета внутри виртуального окружения (скажем, Django):
(envname) $ pip install django
Выход из виртуального окружения:
(envname) $ deactivate
Pipenv
pipenv упрощает управление через командную строку, предоставляя одну программу, которая выполняет все функции вышеперечисленных инструментов.
Установка
Использование
Все команды можно выполнять в папке проекта, и pipenv распознает текущую ситуацию — найдёт виртуальное окружение в текущем каталоге и будет использовать его.
Подробности в документации: [1], [2], [3].
Смотрите также
- Python venv
- Пакет virtualenv на PyPI
- Документация virtualenvwrapper
