Как создать виртуальное окружение в Python
Python предлагает широкий спектр возможностей и имеет множество вариантов для применения. Благодаря своей простоте, читаемости и мощной экосистеме он стал одним из самых популярных языков программирования в мире.
Python используется в таких сферах, как:
- веб-разработка (для создания веб-приложений и веб-серверов),
- анализ данных и машинное обучение,
- автоматизация задач (позволяет легко создавать скрипты для автоматизации различных процессов),
- игровая разработка,
- создание настольных приложений.
Что такое виртуальное окружение Python
Виртуальное окружение Python (Python virtual environment) – это инструмент, позволяющий создавать изолированные среды для выполнения и разработки приложений на языке Python.
С помощью виртуального окружения Python можно установить и использовать различные версии пакетов и зависимостей для каждого проекта, изолируя их друг от друга и предотвращая конфликты или несовместимости.
Используя виртуальное окружение Python, вы получаете:
- Изоляцию зависимостей. Каждое виртуальное окружение имеет собственный независимый набор зависимостей и пакетов, что позволяет избежать конфликты между различными версиями пакетов.
- Управление версиями Python. Вы можете создавать и использовать различные версии Python в разных виртуальных окружениях, переключаясь между версиями, а также тестируя совместимость кода с новыми версиями Python.
- Чистоту проекта. Виртуальное окружение помогает поддерживать проект организованным, так как все зависимости и пакеты проекта хранятся в отдельной директории. Это упрощает управление и развертывание проектов.
- Переносимость. Вы можете передать виртуальное окружение на другую машину или другим разработчикам, что позволяет вести совместную работу над проектом.
Использование виртуальных окружений Python рекомендуется для разработки проектов, поскольку он помогает управлять и упрощать зависимости и версии, а также поддерживать проект в чистом и организованном состоянии.
Услуга VPS/VDS хостинг на Linux подойдет для проектов любой сложности:
- разработка приложений,
- создание почтового сервера,
- размещение интернет-магазина,
- развертывание продуктов 1С,
- размещение CRM-систем.
Создание виртуальной среды Python
Процесс настройки виртуального окружения Python — это создание изолированной среды для разработки и выполнения проектов. Виртуальная среда позволяет вам установить и управлять зависимостями в проекте, не влияя на другие проекты или систему в целом.
Для создания виртуального окружения в Python рекомендуем использовать встроенный модуль venv. Если вы используете версию Python 3.3 или выше, то модуль venv уже включен в стандартную библиотеку и его установка не требуется. Для установки модуля в более ранних версиях Python выполните команду:
pip install virtualenv
Далее следуйте инструкции:
- Откройте командную строку и перейдите в каталог, в котором будет создана виртуальная среда.
- Выполните команду:
python -m venv virt_name
где virt_name – имя вашей виртуальной среды.
- Дождитесь завершения процесса создания виртуальной среды. Это может занять некоторое время.
- Ваша виртуальная среда будет создана в папке virt_name. В ней же будут находиться все файлы и зависимости, связанные с виртуальной средой.
Активация виртуальной среды Python
Процесс активации виртуальной среды может быть выполнена различными способами в зависимости от используемой операционной системы и инструментов виртуализации.
Активируйте виртуальное окружение с помощью команд:
- Для Windows: .\Scripts\activate
- Для macOS и Linux: source bin/activate
При успешной активации на экране отобразится:
Теперь вы находитесь в активированной виртуальной среде Python.
Если вы используете инструмент управления пакетами, такой как pipenv или poetry, вы можете создать и активировать виртуальную среду одной командой.
- Для pipenv: pipenv shell
- Для poetry: poetry shell
Активация виртуальной среды Python позволяет изолировать установленные пакеты и зависимости для конкретного проекта, предотвращает конфликты версий и обеспечивает чистую среду разработки. После активации вы можете устанавливать и запускать пакеты Python внутри виртуальной среды без влияния на другие проекты или глобальную установку Python.
Автоматическая активация виртуальной среды Python
Для включения автоматической активации виртуальной среды при открытии терминала или командной строки, вам потребуется внести следующие изменения в файл конфигурации вашей оболочки (например, .bashrc для Bash или .zshrc для Zsh).
Приведем пример для оболочки Bash:
- Откройте файл конфигурации в текстовом редакторе и введите в терминале:
- В конце файла добавьте следующую строку, указывающую на активацию вашей виртуальной среды:
Замените /path/to/your/virtual/environment на путь к вашей виртуальной среде Python (например, /home/user/virt_name).
- Сохраните изменения и закройте файл конфигурации.
- Обновите текущую сессию оболочки, чтобы изменения вступили в силу:
Замените `~/.bashrc` на путь к вашему файлу конфигурации, если он отличается.
Теперь при открытии нового терминала или командной строки ваша виртуальная среда Python будет автоматически активирована. Это позволит использовать установленные в этой среде библиотеки и исполнять команды Python без необходимости активации вручную.
Деактивация виртуального окружения Python
Для деактивации виртуального окружения можно использовать следующую команду в терминале: deactivate.
Если вы работаете на операционной системе Windows, то вам необходимо использовать команду:
После выполнения этой команды виртуальное окружение будет деактивировано, и вы вернетесь в системное окружение Python.
Заключение
Настройка виртуальной среды в Python дает ряд преимуществ и часто рекомендуется разработчикам при выполнении проектов на Python. Чем может быть полезна виртуальная среда:
- Позволяет создавать отдельную изолированную среду для каждого проекта. Вы можете устанавливать и управлять зависимостями (библиотеки и пакеты) вашего проекта в изолированной среде, не влияя на другие проекты или систему в целом.
- С ее помощью создаются чистые и стабильные окружения для разработки и выполнения проектов. Начать работу можно с чистой виртуальной среды: установить только необходимые зависимости, избегая конфликтов между зависимостями других проектов. Это поможет снизить вероятность возникновения ошибок и облегчит управление зависимостями.
- Виртуальное окружение создает единообразную среду для вашего проекта, независимо от операционной системы или окружения разработки. Вы можете легко перенести ваш проект на другую машину или дать другим пользователям работать с вашим проектом.
- Управление версиями Python. Вы можете создавать и использовать разные виртуальные среды для различных версий Python, позволяя тестировать и разрабатывать проекты на разных версиях языка.
Настройка виртуального окружения Python является хорошей практикой и помогает сделать работу команды разработчиков более изолированной, портативной и стабильной.
Виртуальное окружение
Представь, что у тебя два проекта. Для одного требуется Джанго версии 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: Настройка окружения
Вы уже знаете, что pip устанавливает пакеты в одно из двух окружений — в общесистемное или пользовательское. Интерпретатор Python при импорте модуля или пакета ищет его сначала в пользовательском окружении, затем — в общесистемном. Такая последовательность позволяет пользователю иметь нужные именно ему версии библиотек и Python-программ.
Но даже двух окружений недостаточно, когда программист начинает работать с несколькими проектами, ведь разные проекты могут иметь разные наборы зависимостей. Еще более тяжелый случай: разные проекты могут зависеть от общей библиотеки, но требовать разные ее версии — тогда происходит конфликт версий.
Очевидно, что разработчику на Python нужен какой-то механизм, позволяющий содержать разные проекты в изолированных песочницах. Такой механизм существует. Он называется виртуальные окружения.
Устройство виртуальных окружений
Каждое виртуальное окружение представляет собой директорию. Ее содержимое структурно напоминает общесистемное окружение — поддиректории соответственно названы и наполнены. Давайте рассмотрим пример:
env env ├── bin │ ├── activate │ … │ ├── pip │ … │ └── python3 -> …/python3 ├── lib │ └── python3.6 │ └── site-packages │ ├── pip │ │ ├── … │ … │ └── setuptools-40.6.2.dist-info │ ├── … …
В директории виртуального окружения находится директория bin/ , внутри которой расположены:
- Копия интерпретатора под именем python3 (символическая ссылка на оригинал)
- Копия исполняемого файла pip
В соседней директории по пути lib/python3.6/site-packages есть библиотеки, уже установленные в окружение. Как правило, только что созданное окружение имеет:
- Установленный пакет pip (исполняемый файл bin/pip — его точка входа)
- Пакет Setuptools
Эти два пакета составляют необходимый минимум для разработки проекта на Python.
При работе в окружении нужно запускать не системные Python и pip, а исполняемые файлы из директории bin . Когда интерпретатор Python находится в окружении, он знает, где находятся все доступные пакеты. Интерпретатор находит их по относительному пути ../lib/python3.6 . В таком случае копия pip из директории bin/ устанавливает пакеты в это же окружение, не затрагивая систему. Получается та самая изоляция, о которой мы говорили в начале урока.
Создание виртуального окружения
Вручную создавать всю описанную иерархию директорий и файлов не нужно — для этого есть специальный модуль venv .
В macOS и Windows этот модуль входит в поставку Python. На Ubuntu его нужно установить отдельно командой:
sudo apt install python3-venv
Проверим, что модуль установился и готов к использованию:
-m venv --help usage: venv [-h] [--system-site-packages] [--symlinks | --copies] [--clear] [--upgrade] [--without-pip] [--prompt PROMPT] ENV_DIR [ENV_DIR . ]
Обычно окружение создается командой python3 -m venv имя_окружения . Давайте попробуем создать виртуальное окружение и установить туда пакет cowsay :
Вы можете видеть, что пакет устанавливается вместе с точкой входа, которую можно вызвать командой first_venv/bin/cowsay . Также сам пакет становится доступен интерпретатору, но только тому, что был запущен из окружения.
В таком виде виртуальное окружение уже можно использовать полноценно. Но постоянно вводить команды с префиксом first_venv/bin/ не очень удобно. Есть способ упростить вызов команд, доступных в окружении — это активация.
Активация окружения
При создании окружения в поддиректорию bin помещается сценарий оболочки, который на macOS и Ubuntu называется activate , а на Windows — activate.bat . Чтобы выполнить этот сценарий, нужно вызвать команду:
- на macOS и Ubuntu:
source first_venv/bin/activate
- на Windows:
\> first_venv\Scripts\activate.bat
В команде выше обратите внимание, что в Windows поддиректория с исполняемыми файлами называется не bin , а Scripts .
На Ubuntu активация выглядит следующим образом:
После активации отпала необходимость указывать путь до вызываемого исполняемого файла. Теперь cowsay и python вызываются без префикса, но это все те же команды из окружения.
Еще изменилось приглашение оболочки: в нем стало отображаться имя окружения. Это работает на macOS и Ubuntu и всегда напоминает, что мы находимся в виртуальном окружении.
Деактивация окружения делается командой deactivate , которая становится доступна после активации.
Активация и деактивация окружения влияют только на текущую сессию — то есть заметны только в этом конкретном терминале. Это удобно, потому что так можно иметь несколько окружений и активировать их одновременно в разных окнах терминала.
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
- 130 курсов, 2000+ часов теории
- 1000 практических заданий в браузере
- 360 000 студентов
Наши выпускники работают в компаниях:
Что это такое
Виртуальное окружение — это изолированное окружение среды (в нашем случае это окружение Python), которое позволяет нам использовать определенные версии приложений.
Зачем оно мне?
Предположим, сейчас ты работаешь над несколькими проектами одновременно, и для каждого из них по тем или иным причинам есть свои определенные особенгсти версий пакетов. Например, на одном проекте у тебя Джанга 1.10, на втором — 1.8 , а на третьем — 1.5, да и в придачу Питон 2-й версии. При этом версии приложений менять ну никак нельзя — придется много чего переделывать да и вообще. Вот для таких ситуаций нам как раз и пригодитя виртуальное окружение, позволяющее использовать разные версии приложений.
Что использовать
Все пакеты, работающие с виртуальным окружением решают одну проблему — они позволяют проектам, которые имеют различные (и часто конфликтующие) зависимости, сосуществовать на одной системе.
Virtualenv
virtualenv — стандартный пакет для работы с виртуальным окружением. Используется вместе с virtualenvwrapper для более удобной работы. Установить и ознакомиться подробнее можно в энциклопедии Девмана
Аналоги
Хоть venv и является самым популярным выбором, существуют другие не менее интересные варианты.
Pyenv
Инструмент, позволяющий изолированно использовать различные версии Python. Например, если тебе нужно запустить твой код на разных версиях Питона (2.6, 2.7, 3.3…), то это то, что тебе нужно. Для создания полноценного изолированного окружения следует использовать пакет pyenv-virualenv, позволющий пользоваться pyenv и virtualenv одновременно. Список команд с их описанием здесь(на английском).
Установка
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
Устанавливаем переменные окружения (если у вас Linux, /.bash_profile меняем на «`/.bashrc )
echo 'export PYENV_ROOT token command">$HOME/.pyenv"' >> ~/.bash_profile echo 'export PATH token variable">$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
Инициализируем загрузку pyenv в терминале
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
Команды
pyenv install 2.7.9 pyenv install 3.4.3
Делаем rehash после установки
pyenv rehash
Задаем версию Питона для определенной директории. Версия хранится в файле .python-version
pyenv local 2.7.6
Задаем версию глобально. Будет заменена в случае, если задан файл .python-version
pyenv global 3.3.2
Conda
Conda — пакетный менеджер, который также позволяет нам создавать виртуальные окружения.
Установка
Установим пакет Miniconda — это всего лишь conda и ее зависимости. Скачиваем файл по ссылке. Запускаем файл в терминале
bash Miniconda3-latest-Linux-x86_64.sh
, ждем завершения установки, перезапускаем терминал. ЧТобы убедиться в том, что установка произошла успешно, выполни conda list . Если все хорошо, ты увидишь пакеты, которые были установлены.
Работа с виртуальным окружением
Создаем виртуальное окружение
conda create -n yourenvname python=x.x
source activate yourenvname
source deactivate
conda remove -n yourenvname -all
Установку пакетов можно произвоздить как с помощью conda, так и pip. Pip устанавливается вместе с зависимостями.
Попробуйте бесплатные уроки по Python
Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.
Переходите на страницу учебных модулей «Девмана» и выбирайте тему.