Activate env python windows

#статьи


  • 0

Учимся изолировать код от внешнего мира и предотвращать хаос в зависимостях.

Иллюстрация: Оля Ежак для Skillbox Media

Пишет про digital и машинное обучение для корпоративных блогов. Топ-автор в категории «Искусственный интеллект» на Medium. Kaggle-эксперт.

Виртуальное окружение (venv, virtual environment) в Python — это изолированное рабочее пространство для проектов. Представьте, что ваш компьютер — дом со множеством комнат. Виртуальное окружение в этом случае — отдельная комната с инструментами, мебелью и всем необходимым для работы над конкретным проектом. Вы можете создать сколько угодно таких комнат, и каждая будет существовать независимо от других. Благодаря этому вы сможете переключаться между проектами, не смешивая их содержимое.

Мы упомянули понятие «виртуальное окружение» вместе с терминами virtual environment и venv, которые часто используются как синонимы. Однако между ними есть разница: virtual environment — это общий термин, обозначающий концепцию изолированной среды в Python, а venv — конкретный модуль в стандартной библиотеке Python для создания виртуальных окружений. В статье мы создадим виртуальное окружение с помощью venv, активируем его и потренируемся им пользоваться.

Содержание

  • Подготовка к работе
  • Создание виртуального окружения
  • Активация виртуального окружения
  • Выход из виртуального окружения
  • Подборка альтернативных виртуальных окружений

Начать работу с виртуальным окружением несложно. Однако прежде вам нужно установить Python и редактор кода, а также освоить базовые навыки работы с командной строкой. Если всё это у вас уже есть, можете сразу переходить к следующему разделу.

«Как запустить Python офлайн и онлайн: руководство для новичка» — статья, в которой мы рассматриваем системные требования, помогаем с выбором версии языка и предлагаем пошаговые инструкции по установке Python на Windows, Linux и macOS.

После установки Python откройте терминал и введите следующую команду. Она должна вывести номер установленной версии:

python --version

Если вы установили Python по нашему руководству, то уже познакомились с основными командами терминала. В дальнейшем мы будем использовать такие же простые команды, поэтому специально изучать работу с терминалом не обязательно. Однако, если хотите углубиться в тему, рекомендуем ознакомиться со статьёй «Основные команды и горячие клавиши терминала Linux (а также Unix, macOS и FreeBSD)».

«Visual Studio Code: установка, настройка, русификация и список горячих клавиш» — подробное руководство по настройке бесплатного редактора VS Code. Рекомендуем также установить расширение Python для VS Code, которое включает функции отладки, автодополнения кода, форматирования и интеграции с виртуальными окружениями.

Вот несколько задач, для которых может пригодиться виртуальное окружение.

  • Разработка нескольких проектов с разными зависимостями. Например, один проект может требовать Python 3.7 и Django 2.2, а другой — Python 3.9 и Django 3.2. Виртуальные окружения позволяют легко переключаться между обоими проектами на одном компьютере, избегая конфликтов между версиями.
  • Изоляция проекта от системных библиотек. Предположим, на вашем компьютере установлена версия NumPy 1.18, а проекту требуется версия 1.20. Виртуальное окружение позволяет установить и использовать нужную версию библиотеки для конкретного проекта, не затрагивая системные установки.
  • Обучение и экспериментирование. Виртуальные окружения служат безопасной площадкой для изучения новых библиотек и версий Python. Они позволяют тестировать инструменты без риска нарушить работу существующих проектов.
  • Упрощение развёртывания проектов на разных машинах. Виртуальное окружение облегчает передачу проекта другим разработчикам или клиентам. Достаточно отправить коллеге файл со списком всех зависимостей проекта и их версий, и он сможет воссоздать копию вашей рабочей среды на своём компьютере.

Для создания виртуального окружения в Python откройте терминал, перейдите в директорию проекта и выполните команду:

python -m venv my_project_environment

В этой команде my_project_environment — это название виртуального окружения. Хотя оно может быть любым, старайтесь выбирать имя, которое отражает суть проекта. Лучше использовать длинное и понятное название, чем короткую аббревиатуру.

Перейдём к практике и разберём сценарий, когда на одном компьютере нам нужно создавать два проекта: первый — на Django 2.2, а второй — на Django 3.2.

Давайте последовательно выполним две команды, чтобы создать виртуальные окружения для каждого из наших проектов:

# Создание виртуального окружения для проекта с Django 2.2
python -m venv django_2_2_env

# Создание виртуального окружения для проекта с Django 3.2
python -m venv django_3_2_env

После выполнения команд в терминале не произойдёт видимых изменений. Однако в фоновом режиме Python создаст изолированную среду, скопирует нужные файлы и настроит пути для работы с пакетами.

Интерфейс терминала после создания двух виртуальных окружений
Скриншот: Командная строка Windows / Skillbox Media

После создания виртуального окружения останьтесь в директории проекта и выполните команду активации:

  • для Windows: myenv\\Scripts\\activate;
  • для macOS и Linux: source myenv/bin/activate.

После активации все команды языка Python и менеджера пакетов PIP будут работать с версиями и пакетами, установленными в этом окружении.

Мы создали два виртуальных окружения, но активировать можно только одно за раз. Давайте активируем окружение django_2_2_env в Windows:

django_2_2_env\Scripts\activate

Интерфейс терминала после активации виртуального окружения
Скриншот: Командная строка Windows / Skillbox Media

Теперь перейдём в VS Code и убедимся, что виртуальное окружение активировано и мы можем начать работу над нашим проектом:

  • введите в терминале команду code . для запуска VS Code;
  • в VS Code откройте новый терминал через меню View → Terminal;
  • убедитесь, что в терминале VS Code отображается название вашего виртуального окружения. В нашем случае это django_2_2_env.

Если всё прошло успешно ?, вы можете сразу приступить к работе. Если нет — изучите сообщения в терминале и определите, что именно нужно исправить. Например, мы столкнулись с проблемой активации виртуального окружения через команду терминала из-за политики выполнения PowerShell. Это распространённая ситуация в Windows.

Пример ошибки активации виртуального окружения в редакторе VS Code
Скриншот: Visual Studio Code / Skillbox Media

Если столкнётесь с такой же проблемой, откройте PowerShell от имени администратора и выполните следующую команду:

Set-ExecutionPolicy RemoteSigned

После этого появится запрос на подтверждение изменения политики выполнения скриптов. Введите Y, нажмите Enter и попробуйте снова активировать виртуальное окружение.

Если предыдущий метод не сработал, попробуйте альтернативный способ активации виртуального окружения. Эта команда напрямую запускает скрипт активации, обходя некоторые ограничения безопасности:

path\to\venv\Scripts\activate.bat

path\to\venv\ — это путь к вашему виртуальному окружению. В нашем примере команда будет выглядеть так:

django_2_2_env\Scripts\activate.bat

В процессе работы вы неизбежно столкнётесь со множеством подобных ошибок, которые невозможно предвидеть и предотвратить. Поэтому вам, как разработчику, необходимо научиться копировать текст ошибок и самостоятельно искать решения в интернете.

Мы устранили ошибку, активировали виртуальное окружение и теперь можем приступить к работе над проектом. Давайте установим Django 2.2:

pip install django==2.2

Убедимся, что нужная версия Django установлена:

python -m django --version

Также проверим местоположение нашего виртуального окружения:

pip -V

Результат команды показывает, что мы используем PIP версии 24.2 в виртуальном окружении django_2_2_env. Это подтверждает, что мы работаем в нужном окружении с Django 2.2. Также в выводе указана версия Python. В данном случае это новая версия Python 3.12, которая может быть несовместима с Django 2.2
Скриншот: Visual Studio Code / Skillbox Media

После активации виртуального окружения Python создаёт структуру файлов и папок, обеспечивающую изоляцию проекта и управление зависимостями. Эта структура включает в себя папки Include, Lib и Scripts, а также файл pyvenv.cfg:

Структура файлов и папок виртуального окружения Python venv
Скриншот: Visual Studio Code / Skillbox Media

Папка Include содержит специальные файлы, необходимые для компиляции некоторых Python-пакетов. Например, при установке библиотеки NumPy, которая включает части кода на языке C, система использует файлы из этой папки для компиляции и установки пакета в вашем виртуальном окружении. Изначально эта папка пуста, а необходимые файлы создаются по мере установки определённых пакетов.

Папка Lib содержит все установленные библиотеки и пакеты для данного окружения. Например, если вы установили в виртуальное окружение Django 3.2, в папке Lib/site-packages будет храниться директория django со всеми файлами этого фреймворка.

Папка Scripts содержит исполняемые файлы и скрипты для работы с окружением. Вот её основное содержимое:

  • activate и activate.bat — скрипты для активации виртуального окружения;
  • deactivate.bat — скрипт для деактивации окружения;
  • python.exe — исполняемый файл Python для данного окружения;
  • pip.exe — утилита для установки пакетов и управления ими.

Pyvenv.cfg — это конфигурационный файл, обеспечивающий корректную работу виртуального окружения. Он указывает системе, какую версию Python и какие настройки применить при активации окружения.

Допустим, мы хотим выйти из виртуального окружения в основное пространство системы. Для этого достаточно выполнить простую команду:

deactivate

После этого введите pip -V и убедитесь, что вы больше не находитесь в виртуальном окружении. Если деактивация не произошла, перезапустите VS Code и повторите процесс. Вот несколько дополнительных советов:

  • python -m venv —help — используйте эту команду для просмотра всех доступных опций при создании виртуального окружения и работе с ним.
  • Virtualenvwrapper — попробуйте этот инструмент, если вам часто приходится создавать несколько виртуальных окружений и переключаться между ними. Он удобнее стандартного venv, поскольку предоставляет простые команды для управления виртуальными окружениями и хранит все окружения в одном месте.
  • pip install —upgrade [имя_пакета] — применяйте эту команду примерно раз в месяц или при выходе важных обновлений безопасности. Это поможет поддерживать актуальность пакетов в вашем виртуальном окружении.

Теперь активируем второе виртуальное окружение django_3_2_env:

django_3_2_env\Scripts\activate.bat

Предположим, во время активации мы столкнулись с какой-то новой ошибкой и не смогли её исправить. В таком случае нам нужно удалить это окружение, чтобы создать его заново:

  • в Windows: rmdir /s /q имя_окружения;
  • в macOS и Linux: rm -rf имя_окружения.

имя_окружения — название окружения, которое вы деактивировали и хотите удалить.

Теперь применим новую команду и попробуем удалить второе окружение:

rmdir /s django_3_2_env

Эта команда должна полностью удалить директорию виртуального окружения, однако иногда она не срабатывает и выдаёт такую ошибку:

+ CategoryInfo : InvalidArgument: (:) [Remove-Item], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.RemoveItemCommand

Эта ошибка часто возникает из-за особенностей работы PowerShell в Windows, связанных с ограничениями доступа или блокировкой файлов системой. Для её устранения воспользуйтесь альтернативной командой:

Remove-Item -Recurse -Force django_3_2_env

Если альтернативная команда не сработала, закройте все программы и процессы, которые могут использовать файлы в этой директории. Затем перезапустите редактор кода и попробуйте снова удалить окружение. Такова она, жизнь программиста ¯\(ツ)/¯

Мы удалили django_3_2_env, и в каталоге файлов осталось лишь django_2_2_env. Вместе с удалённым окружением исчез и его конфигурационный файл
Скриншот: Visual Studio Code / Skillbox Media

Помимо venv, есть и другие инструменты для создания изолированных сред в Python, которые лучше подходят для определённых задач. Рассмотрим некоторые из них:

  • Virtualenv поддерживает старые версии Python и предоставляет больше функций, чем venv. Например, Virtualenv позволяет указать конкретную директорию для установки пакетов, в то время как venv использует фиксированный подкаталог. Такая гибкость делает Virtualenv удобным для сложных проектов.
  • Conda управляет пакетами Python и системными зависимостями, что делает его подходящим для сложных проектов в data science и машинном обучении. Например, одной командой Conda может создать окружение с Python 3.8, TensorFlow 2.4.0 и OpenCV. В сравнении с Conda у venv более ограниченная функциональность: он создаёт окружения только для Python и его пакетов, не управляет системными зависимостями и работает с уже установленной версией Python.
  • Pipenv объединяет управление зависимостями и виртуальными окружениями в одном инструменте — воспроизводимой среде разработки. У venv более узкая функциональность: он не управляет зависимостями автоматически и не предоставляет инструментов для разделения сред разработки и продакшена.
  • Poetry управляет зависимостями, сборкой и публикацией пакетов в Python. Его часто применяют в проектах, требующих точного контроля версий. Poetry позволяет указывать конкретные версии пакетов, чтобы обеспечить единую среду разработки для всех участников проекта и избежать ошибок из-за разных версий проекта.

Выбор инструмента зависит от специфики проекта, личных предпочтений и требований команды. Например, специалист по data science может предпочесть Conda вместо venv для работы с большими объёмами данных и выполнения сложных вычислений.

Бесплатный курс: «Быстрый старт в Python»
Начать учиться

Один проект требует Django 4.2, другой — Flask и пару экспериментальных библиотек. Как не запутаться в зависимостях и сохранить порядок в системе? Ответ — виртуальное окружение. В этой статье разберемся, как с помощью venv создать изолированную среду и запустить в ней простое Python-приложение.

Что такое виртуальное окружение и зачем оно нужно

Виртуальное окружение — это изолированная от основной системы среда, содержащая все необходимые зависимости для работы программного обеспечения.

Разработчикам нередко приходится использовать разные версии библиотек, а иногда и самого Python для различных проектов. Чтобы не засорять глобальное окружение и избежать конфликтов между версиями, оптимальным решением становится создание виртуального окружения.

Python venv — один из самых популярных инструментов для этой задачи. Он входит в стандартную библиотеку Python и служит универсальным способом защиты от несовместимости установленных пакетов.

Прежде чем начать использовать виртуальную среду, её нужно создать и активировать. Далее разберёмся, как это сделать.

Создание, активация и деактивация venv

Чтобы создать виртуальное окружение с помощью venv, откройте командную строку и выполните следующую команду:

python3 -m venv env

В этой команде флаг -m указывает, что venv запускается как исполняемый модуль. Последняя часть команды (env) — это имя создаваемого виртуального окружения. В результате выполнения появится папка env (обычно в текущем каталоге), содержащая все необходимые файлы среды.

Внутри папки env находятся четыре основные директории — bin, include, lib, lib64 — и конфигурационный файл pyvenv.cfg.

  • В папке bin размещаются исполняемые файлы и сценарии (в Windows вместо неё используется папка Scripts).
  • Папка include содержит файлы, необходимые для компиляции некоторых пакетов.
  • В каталогах lib и lib64 располагаются установленные библиотеки.
  • Файл pyvenv.cfg хранит настройки, используемые при активации среды.

Чтобы начать работу в виртуальной среде, её нужно активировать. В Linux и macOS используется команда:

source env/bin/activate

В Windows — так:

env\Scripts\activate.bat

После успешной активации в командной строке появится приглашение вида:

(env) alex@alex-pc:~$

Теперь можно устанавливать пакеты, запускать скрипты и работать в изолированной среде. Когда работа завершена, окружение деактивируется простой командой:

deactivate

Если вы больше не планируете использовать среду, достаточно просто удалить папку env. Для получения справки по доступным аргументам и флагам используйте:

python3 -m venv -h

Вывод будет примерно таким:

Установка venv

Например:

  • флаг —upgrade используется для обновления существующей среды;
  • флаг —upgrade-deps — для обновления зависимостей до последних версий из PyPI;
  • флаг -h (или —help) выводит справку, как показано выше.

Теперь можно перейти к запуску простой консольной программы в только что созданной виртуальной среде.

Запуск простой программы в venv

Итак, виртуальное окружение создано и активировано. Теперь попробуем запустить в нём простую программу. Сначала напишем следующий скрипт:

import datetime
import pytz

city_name = 'Иркутск'
time_zone = pytz.timezone('Asia/Irkutsk')
current_time = datetime.datetime.now(time_zone)

print(f"Текущее время в городе {city_name}: {current_time.strftime('%H:%M')}")

Эта программа выводит в консоль текущее время в городе Иркутск. Для этого используются модули datetime и pytz, которые импортируются в начале. Затем создаётся переменная city_name с названием города. Далее определяется временная зона (time_zone) и передаётся в метод now() модуля datetime. Это позволяет получить объект current_time с актуальным временем для указанного города. Результат выводится на экран с помощью форматированной строки.

Сохраним файл под именем current-time.py рядом с директорией виртуального окружения. Чтобы запустить программу, в активированной среде выполните команду:

python3 current-time.py

Технически скрипт можно запускать и без активации среды, указав путь к интерпретатору Python из виртуального окружения:

./env/bin/python current-time.py

После запуска может появиться сообщение об ошибке: модуль pytz не найден. Установим его командой:

pip install pytz

Установка произойдёт только в рамках текущей виртуальной среды, и модуль будет доступен только в ней. В других окружениях его потребуется устанавливать отдельно. Теперь повторно запустим программу:

(env) alex@alex-pc:~$ python3 current-time.py
Текущее время в городе Иркутск: 12:04

Это значит, что всё работает как нужно.

Рекомендуется для каждого проекта создавать отдельную директорию, а в ней — своё виртуальное окружение. Например, можно хранить проекты в папке Projects, а для этого случая создать подпапку current-time, где будет находиться файл current-time.py. В командной строке нужно перейти в эту папку и далее действовать, как описано во втором разделе этой статьи.

Работать с виртуальными средами особенно удобно в IDE PyCharm и редакторе Visual Studio Code с установленными расширениями для Python. В PyCharm при создании нового проекта сразу предлагается создать виртуальное окружение или указать путь к уже существующему.

Шаг 1

Источник: автор статьи

Если вы открываете существующую папку проекта, в которой ещё нет окружения, PyCharm или Visual Studio Code позволят легко создать его вручную. В Visual Studio Code нужно открыть командную палитру через меню «Вид». 

Шаг 2

Источник: автор статьи

Потом в открывшемся окне выбрать пункт «Python: Выбор интерпретатора» и в следующем окне можно создать новую виртуальную среду или выбрать уже существующую:

Шаг 3

Источник: автор статьи

Далее кратко рассмотрим альтернативные инструменты для управления виртуальными окружениями.

Альтернативные виртуальные окружения

Но, как говорится, на одном Python venv свет клином не сошелся.Существуют и другие инструменты для управления виртуальными средами.

  • Virtualenv — во многом схож с venv, но обладает более широкими возможностями и поддерживает более старые версии Python.
  • Poetry — управляет не только зависимостями и виртуальными окружениями, но и сборкой пакетов, публикацией проектов и всей их структурой.
  • Conda — полноценный менеджер окружений и целая экосистема. Обладает собственным репозиторием пакетов и подходит не только для Python, но и для других языков.
  • Pipenv — объединяет менеджер пакетов и менеджер виртуальных сред. Делает акцент на удобстве работы с зависимостями и автоматическом создании окружений.
  • PyFlow — инструмент для управления пакетами, зависимостями и виртуальными средами. Подходит для упрощения процессов установки и настройки.
  • Hatch — современный, расширяемый менеджер проектов. Надёжно управляет виртуальными средами и поддерживает создание пользовательских сценариев.

Полезные ссылки

Ниже — несколько ресурсов, которые будут особенно полезны начинающим Python-разработчикам:

  • Создание виртуальных окружений — официальная документация по модулю venv.
  • Виртуальные среды и пакеты — руководство по работе с пакетами внутри виртуальных окружений.
  • Python-окружения в VS Code — инструкция по созданию и управлению Python-окружениями (в том числе виртуальными) в Visual Studio Code.
  • Виртуальные окружения в Python —обзор виртуальных сред и инструментов для работы с ними на русском языке.

Python virtual environments allow you to install Python packages in a location isolated from the rest of your system instead of installing them system-wide. Let’s look at how to use Python venv’s, short for Python virtual environments, also abbreviated as virtualenv.

In this article, you will learn:

  • The advantages of using virtual environments
  • How to create a venv
  • How to activate and deactivate it
  • Different ways to delete or remove a venv
  • How a venv works internally

Table of Contents

  • 1 Follow the course
  • 2 Why you need virtual environments
  • 3 Virtual environments vs. other options
  • 4 How to create a Python venv
  • 5 Python venv activation
  • 6 How a Python venv works
  • 7 Deactivate the Python venv
  • 8 Deleting a Python venv
  • 9 Follow the course
  • 10 Learn more
  • 11 Conclusion

Follow the course

I’m convinced this article gives you the solution to your problem, but how annoying is it to not exactly understand what’s going on? Stop feeling like a voodoo coder and learn this stuff properly once and for all. Our Python Fundamentals course extensively explains Modules and packages, Virtual environments, and Package managers. Give it a try; I assure you that you’ll like it!

Why you need virtual environments

There are multiple reasons why virtual environments are a good idea, and this is also why I’m telling you about them before we continue to the part where we start installing 3rd party packages. Let’s go over them one by one.

Preventing version conflicts

You could argue that installing third-party packages system-wide is very efficient. After all, you only need to install it once and can use the package from multiple Python projects, saving you precious time and disk space. There’s a problem with this approach that may start to unfold weeks or months later, however.

Suppose your project, Project A, is written against a specific version of library X. In the future, you might need to upgrade library X. Say, for example, you need the latest version for another project you started, called Project B. You upgrade library X to the latest version, and project B works fine. Great! But once you did this, it turns out your Project A code broke badly. After all, APIs can change significantly on major version upgrades.

A virtual environment fixes this problem by isolating your project from other projects and system-wide packages. You install packages inside this virtual environment specifically for the project you are working on.

  • Product on sale

    Modules, Packages, And Virtual Environments (2024)

    Modules, Packages, And Virtual Environments (2024)

    Original price was: € 59.00.Current price is: € 39.00.

Easy to reproduce and install

Virtual environments make it easy to define and install the packages specific to your project. Using a requirements.txt file, you can define exact version numbers for the required packages to ensure your project will always work with a version tested with your code. This also helps other users of your software since a virtual environment helps others reproduce the exact environment for which your software was built.

Works everywhere, even when not administrator (root)

If you’re working on a shared host, like those at a university or a web hosting provider, you won’t be able to install system-wide packages since you don’t have the administrator rights to do so. In these places, a virtual environment allows you to install anything you want locally in your project.

Virtual environments vs. other options

There are other options to isolate your project:

  1. In the most extreme case, you could buy a second PC and run your code there. Problem fixed! It was a bit expensive, though!
  2. A virtual machine is a much cheaper option but still requires installing a complete operating system—a bit of a waste as well for most use cases.
  3. Next in line is containerization, with the likes of Docker and Kubernetes. These can be very powerful and are a good alternative.

Still, there are many cases when we’re just creating small projects or one-off scripts. Or perhaps you just don’t want to containerize your application. It’s another thing you need to learn and understand, after all. Whatever the reason is, virtual environments are a great way to isolate your project’s dependencies.

There are several ways to create a Python virtual environment, depending on the Python version you are running.

Before you read on, I want to point you to two other tools, Python Poetry and Pipenv. Both these tools combine the functionality of tools you are about to learn: virtualenv and pip. On top of that, they add several extras, most notably their ability to do proper dependency resolution.

To better understand virtual environments, I recommend you learn the basics first though, using this article. I just want to ensure that you know there are nicer ways to manage your packages, dependencies, and virtual environments.

Python 3.4 and above

If you are running Python 3.4+, you can use the venv module baked into Python:

python -m venv <directory>

This command creates a venv in the specified directory and copies pip into it as well. If you’re unsure what to call the directory: venv is a commonly seen option; it doesn’t leave anyone guessing what it is. So the command, in that case, would become:

python -m venv venv

A little further in this article, we’ll look closely at the just-created directory. But let’s first look at how to activate this virtual environment.

All other Python versions

The alternative that works for any Python version is using the virtualenv package. You may need to install it first with pip install:

pip install virtualenv

Once installed, you can create a virtual environment with:

virtualenv [directory]

Python venv activation

How you activate your virtual environment depends on the OS you’re using.

Windows venv activation

To activate your venv on Windows, you need to run a script that gets installed by venv. If you created your venv in a directory called myenv, the command would be:

# In cmd.exe
venv\Scripts\activate.bat
# In PowerShell
venv\Scripts\Activate.ps1

Linux and MacOS venv activation

On Linux and MacOS, we activate our virtual environment with the source command. If you created your venv in the myvenv directory, the command would be:

$ source myvenv/bin/activate

That’s it! We’re ready to rock! You can now install packages with pip, but I advise you to keep reading to understand the venv better first.

How a Python venv works

When you activate a virtual environment, your PATH variable is changed. On Linux and MacOS, you can see it for yourself by printing the path with echo $PATH. On Windows, use echo %PATH% (in cmd.exe) or $Env:Path (in PowerShell). In my case, on Windows, it looks like this:

C:\Users\erik\Dev\venv\Scripts;C:\Program Files\PowerShell\7;C:\Program Files\AdoptOpen....

It’s a big list, and I only showed the beginning of it. As you can see, the Scripts directory of my venv is put in front of everything else, effectively overriding all the system-wide Python software.

So what does this PATH variable do?

When you enter a command that can’t be found in the current working directory, your OS starts looking at all the paths in the PATH variable. It’s the same for Python. When you import a library, Python looks in your PATH for library locations. And that’s where our venv-magic happens: if your venv is there in front of all the other paths, the OS will look there first before looking at system-wide directories like /usr/bin. Hence, anything installed in our venv is found first, and that’s how we can override system-wide packages and tools.

What’s inside a venv?

If you take a look inside the directory of your venv, you’ll see a folder structure like this on Windows:

.
├── Include
├── Lib
│   └── site-packages
├── pyvenv.cfg
└── Scripts
    ├── activate
    ├── activate.bat
    ├── Activate.ps1
    ├── deactivate.bat
    ├── pip3.10.exe
    ├── pip3.exe
    ├── pip.exe
    ├── python.exe
    └── pythonw.exe

And on Linux and MacOS:

A Python venv directory tree

Virtualenv directory tree

You can see that:

  • The Python command is made available as both python and python3 (on Linux and MacOS), and the version is pinned to the version with which you created the venv by creating a symlink to it.
  • On Windows, the Python binary is copied over to the scripts directory.
  • All packages you install end up in the site-packages directory.
  • We have activation scripts for multiple shell types (bash, csh, fish, PowerShell)
  • Pip is available under pip and pip3, and even more specifically under the name pip3.7 because I had a Python 3.7 installation at the time of writing this.

Deactivate the Python venv

Once you have finished working on your project, it’s a good habit to deactivate its venv. By deactivating, you leave the virtual environment. Without deactivating your venv, all other Python code you execute, even if it is outside your project directory, will also run inside the venv.

Luckily, deactivating your virtual environment couldn’t be simpler. Just enter this: deactivate. It works the same on all operating systems.

Deleting a Python venv

You can completely remove a virtual environment, but how you do that depends on what you used to create the venv. Let’s look at the most common options.

Delete a venv created with Virtualenv or python -m venv

There’s no special command to delete a virtual environment if you used virtualenv or python -m venv to create your virtual environment, as is demonstrated in this article. When creating the virtualenv, you gave it a directory to create this environment in.

If you want to delete this virtualenv, deactivate it first and then remove the directory with all its content. On Unix-like systems and in Windows Powershell, you would do something like this:

deactivate
# If your virtual environment is in a directory called 'venv':
rm -r venv

Delete a venv with Pipenv

If you used Pipenv to create the venv, it’s a lot easier. You can use the following command to delete the current venv:

pipenv --rm

Make sure you are inside the project directory. In other words, the directory where the Pipenv and Pipenv.lock files reside. This way, pipenv knows which virtual environment it has to delete.

If this doesn’t work, you can get a little nastier and manually remove the venv. First, ask pipenv where the actual virtualenv is located with the following command:

pipenv --env
/home/username/.local/share/virtualenvs/yourproject-IogVUtsM

It will output the path to the virtual environment and all of its files and look similar to the example above. The next step is to remove that entire directory, and you’re done.

Delete a venv with Poetry

If you created the virtualenv with Poetry, you can list the available venvs with the following command:

poetry env list

You’ll get a list like this:

test-O3eWbxRl-py2.7
test-O3eWbxRl-py3.6
test-O3eWbxRl-py3.7 (Activated)

You can remove the environment you want with the poetry env remove command. You need to specify the exact name from the output above, for example:

poetry env remove test-O3eWbxRl-py3.7

Follow the course

Stop feeling like a voodoo coder and learn this stuff properly once and for all. Our Python Fundamentals course extensively explains Modules and packages, Virtual environments, and Package managers. Give it a try; I assure you that you’ll like it!

Learn more

This article is part of a free Python Tutorial. You can browse the tutorial with the navigation buttons at the top and bottom of the article or use the navigation menu. Want to learn more? Here are some great follow-up reads:

  • Next up: how to install packages with pip inside your venv
  • Pipenv is a better way of managing your venv and packages.
  • Learn the most common Linux commands (like cd, mkdir, pwd, etcetera)
  • Official venv documentation: If you want to know all the details and command-line options

Conclusion

You learned how to create, activate, deactivate, and delete virtual environments. We also looked behind the curtains to see why and how a venv works. Now that you know how to create a venv, you need to learn how to install packages inside it. After that, I strongly recommend you to learn about Pipenv or Poetry. These tools combine the management of your virtual environment with proper package and dependency management.

Learn Python properly through small, easy-to-digest lessons, progress tracking, quizzes to test your knowledge, and practice sessions. Each course will earn you a downloadable course certificate.

Виртуальные среды Python (англ. virtual enviroment, сокращенно venv или virtualenv) позволяют устанавливать пакеты Python в изолированном от остальной части вашей системы месте. Давайте посмотрим, как их использовать для вашей работы.

Друзья, подписывайтесь на наш телеграм канал Pythonist. Там еще больше туториалов, задач и книг по Python.

Оглавление

  • Зачем нужны виртуальные среды
  • Альтернативы виртуальных сред
  • Как создать виртуальную среду
  • Активация виртуальной среды
  • Как в Python работают виртуальные среды
  • Деактивация виртуальной среды
  • Удаление виртуальной среды
  • Заключение

Зачем нужны виртуальные среды

Существует множество причин, по которым виртуальные среды это хорошая идея. И именно поэтому мы вам о них рассказываем до того, как начнем устанавливать сторонние библиотеки. Итак, рассмотрим эти причины по порядку.

Предотвращение конфликтов версий

Вы можете возразить, что установка сторонних пакетов для всей системы очень эффективна. В конце концов, вам нужно установить пакет только один раз, и вы сможете использовать его в нескольких разных проектах Python, экономя драгоценное время и дисковое пространство. Однако в этом подходе есть проблема, которая может начать проявляться через несколько недель или месяцев.

Предположим, ваш проект, назовем его Проект А, написан на основе конкретной версии библиотеки X. В будущем вам может потребоваться обновить библиотеку X. Скажем, вам нужна последняя версия для другого начатого вами проекта под названием Проект Б. Вы обновляете библиотеку X до последней версии, и проект B работает нормально. Прекрасно, но после этого выясняется, что код Проекта А неисправен. При обновлении версий интерфейс может быть серьезным образом изменен.

Виртуальная среда решает эту проблему, изолируя ваш проект от других проектов и общесистемных пакетов. Вы устанавливаете пакеты внутри этой виртуальной среды специально для проекта, над которым работаете.

Легкость воспроизведения и установки

Виртуальные среды упрощают определение и установку пакетов, специфичных для вашего проекта. Используя файл require.txt, вы можете определить точные номера версий необходимых пакетов, чтобы ваш проект всегда работал с версией, протестированной с вашим кодом.

Работает везде, даже без прав администратора (root)

Если вы работаете на общем хосте, например, в университете или у провайдера веб-хостинга, вы не сможете устанавливать общесистемные пакеты, поскольку у вас нет для этого прав администратора. В этих местах виртуальная среда позволяет вам локально установить в свой проект все, что вы захотите.

Альтернативы виртуальных сред

Есть и другие варианты для изоляции вашего проекта:

  1. В самом крайнем случае можно купить второй компьютер и запускать на нем свой код. Проблема решена! Хотя это было бы немного дороговато!
  2. Виртуальная машина — гораздо более дешевый вариант, но она все равно требует установки полной операционной системы, что в большинстве случаев также является расточительством.
  3. Хорошей альтернативой является контейнеризация, например Docker или Kubernetes. Это весьма мощные инструменты для разработки.

Тем не менее, во многих случаях мы просто создаем небольшие проекты или одноразовые скрипты. Или, возможно, просто не хотим контейнеризировать свое приложение. В конце концов, это еще одна вещь, которую вам нужно выучить и понять. Какой бы ни была причина, виртуальные среды — отличный способ изолировать зависимости вашего проекта.

Как создать виртуальную среду

Существует несколько способов создания виртуальной среды в зависимости от используемой версии Python.

Прежде чем вы продолжите чтение, мы бы хотели указать вам на два других инструмента: Python Poetry и Pipenv. Оба эти инструмента сочетают в себе функциональность инструментов, которые вы собираетесь изучить: virtualenv и pip. Кроме того, они добавляют несколько дополнительных возможностей, и в первую очередь — возможность правильного разрешения зависимостей.

Python 3.4 и выше

Если вы используете Python 3.4+, то модуль venv уже встроен в него.

python -m venv <directory>

Эта команда создает виртуальную среду в указанном каталоге и также копирует в него пакетный менеджер pip. Если вы не решили, как назвать каталог: обычно по умолчанию используется название venv; это не дает никому усомнится, что там такое. Таким образом, команда в этом случае будет выглядеть вот так:

python -m venv venv

Чуть дальше в этой статье мы внимательно рассмотрим только что созданный каталог. Но сначала посмотрим, как активировать эту виртуальную среду.

Другие версии Python

Альтернативой, которая работает для любой версии Python, является использование пакета virtualenv. Но для этого его надо сначала установить:

pip install virtualenv

После установки можно создать виртуальную среду с помощью следующей команды:

virtualenv [directory]

Активация виртуальной среды

Способ активации виртуальной среды зависит от используемой вами ОС.

Активация виртуальной среды в Windows

Чтобы активировать виртуальную среду в Windows, вам необходимо запустить скрипт, который устанавливается вместе с ней. Если вы создали свою виртуальную среду в каталоге с именем venv, то команда будет выглядеть следующим образом:

# In cmd.exe
venv\Scripts\activate.bat
# In PowerShell
venv\Scripts\Activate.ps1

Активация виртуальной среды в Linux и MacOS

В Linux и MacOS мы активируем виртуальную среду при помощи команды source. Если вы создали свою виртуальную среду в каталоге myvenv, то команда будет выглядеть так:

$ source myvenv/bin/activate

Вот и все! Мы готовы к работе! Теперь можно устанавливать пакеты при помощи пакетного менеджера pip, но мы советуем вам продолжить чтение, чтобы лучше понять механизмы работы виртуальных сред.

При активации виртуальной среды изменяется переменная PATH. В Linux и MacOS это можно увидеть, распечатав ее с помощью команды echo $PATH. В Windows используется команда echo %PATH% (в cmd.exe) или команда $Env:Path (в PowerShell). В нашем случае под Windows это выглядит следующим образом:

C:\Users\erik\Dev\venv\Scripts;C:\Program Files\PowerShell\7;C:\Program Files\AdoptOpen....

Это длинный список, и мы показали только его начало. Как видите, каталог Scripts моей виртуальной среды помещен впереди всех других каталогов, фактически переопределяя все общесистемные программы Python.

Что же делает переменная PATH?

Когда вы вводите команду, которая не может быть найдена в текущем рабочем каталоге, ваша ОС начинает просматривать все пути в переменной PATH.

То же самое происходит и с Python. Когда вы импортируете библиотеку, Python просматривает PATH на предмет расположения библиотеки. И вот тут-то и происходит наша магия с виртуальной средой: если виртуальная среда находится перед всеми остальными путями, то ОС будет искать сначала в ней, а потом уже обращаться к общесистемным каталогам, таким как /usr/bin. Таким образом, все, что установлено в нашей виртуальной среде, будет найдено первым, и именно так мы можем переопределять общесистемные пакеты и инструменты.

Что находится внутри виртуальной среды?

Если заглянуть в каталог виртуальной среды, то под операционной системой Windows вы увидите примерно следующее:

.
├── Include
├── Lib
│   └── site-packages
├── pyvenv.cfg
└── Scripts
    ├── activate
    ├── activate.bat
    ├── Activate.ps1
    ├── deactivate.bat
    ├── pip3.10.exe
    ├── pip3.exe
    ├── pip.exe
    ├── python.exe
    └── pythonw.exe

А под Linux и MacOS вот что:

Можно заметить, что:

  • доступны команды python и python3 (в Linux и MacOS), причем версия соответствует версии Python, в которой была создана виртуальная среда
  • в операционной системе Windows двоичный файл Python копируется в каталог scripts
  • все устанавливаемые пакеты попадают в каталог site-packages
  • у нас есть скрипты активации для различных типов оболочек (bash, csh, fish, PowerShell)
  • пакетный менеджер pip можно запускать посредством команд pip и pip3 и даже pip3.7, так как на момент установки виртуальной среды у нас была версия Python 3.7.

Деактивация виртуальной среды

По окончании работы над проектом рекомендуется деактивировать его виртуальную среду. Деактивация означает выход из данной виртуальной среды. Без деактивации виртуальной среды весь остальной выполняемый вами Python-код, даже если он находится вне каталога проекта, также будет выполняться внутри этой виртуальной среды.

К счастью, деактивация виртуальной среды крайне проста. Просто введите команду deactivate. Это работает одинаково во всех операционных системах.

Удаление виртуальной среды

Виртуальную среду можно полностью удалить, но как это сделать, зависит от того, что именно использовалось для ее создания. Рассмотрим наиболее распространенные варианты.

Удаление виртуальной среды, созданной при помощи команды Virtualenv или python -m venv

Если для создания виртуальной среды вы использовали команды virtualenv или python -m venv, как это было показано выше в данной статье, то какой-либо специальной команды для ее удаления не существует. При создании виртуальной среды вы задали каталог, в котором было создано данное окружение.

Если вы хотите удалить эту виртуальную среду, то сначала деактивируйте ее, а затем удалите ее каталог со всем его содержимым. В Unix-подобных системах и в Windows PowerShell это можно сделать следующим образом:

deactivate
# Если ваша виртуальная среда находится в каталоге под названием 'venv':
rm -r venv

Удаление виртуальной среды, созданной при помощи Pipenv

Если для создания виртуальной среды вы использовали Pipenv, то все гораздо проще. Для ее удаления можно воспользоваться следующей командой:

pipenv --rm

Только убедитесь, что вы находитесь в каталоге проекта. Другими словами, в каталоге, где находятся файлы Pipenv и Pipenv.lock. Таким образом pipenv узнает, какое виртуальное окружение ему нужно удалить.

Если это не сработало, можно поступить немного грубее и удалить виртуальную среду вручную. Сначала спросите у pipenv, где находится данная виртуальная среда, выполнив следующую команду:

pipenv --env
/home/username/.local/share/virtualenvs/yourproject-IogVUtsM

Данная команда выведет путь к виртуальной среде и всем ее файлам, который будет выглядеть примерно так, как показано выше. Следующим шагом будет удаление всего этого каталога. И все, дело сделано.

Удаление виртуальной среды, созданной при помощи Poetry

Если вы создали виртуальную среду при помощи Poetry, то список доступных сред можно составить при помощи следующей команды:

poetry env list

Вы получите примерно такой список:

test-O3eWbxRl-py2.7
test-O3eWbxRl-py3.6
test-O3eWbxRl-py3.7 (Activated)

Удалить нужное окружение можно с помощью команды poetry env remove. При этом необходимо указать точное имя среды из приведенного выше вывода, например:

poetry env remove test-O3eWbxRl-py3.7

Заключение

Вы узнали, как создавать, активировать, деактивировать и удалять виртуальные среды. Мы также слегка заглянули за ширму, чтобы узнать, как работает виртуальная среда и для чего она нужна.

Теперь, когда вы знаете, как создавать виртуальные среды, вам необходимо научиться устанавливать в них пакеты. Для этого мы настоятельно рекомендуем вам познакомиться с Pipenv или Poetry. Эти инструменты объединяют управление виртуальной средой с правильным управлением пакетами и зависимостями.

Перевод статьи «Python venv: How To Create, Activate, Deactivate, And Delete».

Last Updated :
13 Dec, 2024

A virtual environment is a self-contained directory that contains a Python installation for a particular version of Python, plus a number of additional packages. Using virtual environments is a common practice in Python development as it helps to manage dependencies for different projects, avoiding conflicts between them. The venv module provides support for creating lightweight virtual environments.

Check if venv is Installed

To check if venv is installed enter the following command:

python -m venv --help

If venv is not available, we might need to install it. On Debian-based systems (like Ubuntu), we can install it using:

sudo apt-get install python3-venv

If venv is not available on your Windows system, it’s likely because the required components were not included during the Python installation.

Create a Virtual Environment using venv

To create a virtual environment, you can use the venv module, which is included in the Python standard library.

Steps to Create a Virtual Environment

1. Open a Terminal or Command Prompt:

Depending on your operating system, you can use the terminal (macOS/Linux) or Command Prompt (Windows).

2. Navigate to Your Project Directory:

Use the cd command to change the directory to your project’s folder. For example:

cd path/to/your/project

3. Create the Virtual Environment:

Use the python -m venv command followed by the name you want to give to your virtual environment. It’s common to name the environment venv or env.

To create a virtualenv use the following command:

python -m venv venv

After running this command, a directory named venv will be created. This is where Python packages will be installed. To list the files in the folder type below command in the terminal:

 dir venv

Output:

4. Activate the Virtual Environment:

Activating a virtual environment sets up your terminal to use the specific Python and package settings for that environment, ensuring isolation from other projects. This prevents dependency conflicts and ensures consistency in package versions. Different operating systems and shells require different activation commands.

Activation commands vary by operating system and shell.

OS Shell Activation Command
Windows Command Prompt path\to\venv\Scripts\activate
Windows PowerShell .\path\to\venv\Scripts\Activate
macOS/Linux Bash source path/to/venv/bin/activate
macOS/Linux Fish source path/to/venv/bin/activate.fish
macOS/Linux PowerShell path\to\venv\Scripts\Activate

To ensure the pip command uses the virtual environment, you need to activate it. Follow these steps:

Change Directory to Scripts:

cd venv\Scripts

Activate the Virtual Environment:

activate.bat

After activation, the virtual environment name appears on the left side of the terminal, indicating it’s active. For example, if your virtual environment is named venv, you’ll see (venv) in your terminal prompt.

Screenshot-2024-12-13-174248

Output

5. Install Packages:

Now that the virtual environment is activated, you can install packages using pip and they will be installed only in this environment:

pip install requests

Screenshot-2024-12-13-174225

Output

6. Deactivate the Virtual Environment:

When you are done working, you can deactivate the environment by simply typing:

deactivate

Screenshot-2024-12-13-174747

Output

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Smb сервер для windows 10
  • Windows system32 driverstore temp
  • Windows 10 home как настроить удаленный доступ
  • Ps remote play windows 10 как подключить джойстик
  • Autosettingsps скрипт настройки windows