Виртуальное окружение (venv)
upd:
172.8K
10

Виртуальное окружение Python (venv)

  • Настройка виртуального окружения
  • Создание
  • Активация
  • Автоматическая активация
  • Деактивация
  • Альтернативы venv

Все сторонние пакеты устанавливаются менеджером PIP глобально. Проверить это можно просто командой pip show <имя_пакета>.

root@purplegate:~# pip3 show pytest Name: pytest Version: 5.3.2 Summary: pytest: simple powerful testing with Python Home-page: https://docs.pytest.org/en/latest/ Author: Holger Krekel, Bruno Oliveira, Ronny Pfannschmidt, ... License: MIT license Location: /usr/local/lib/python3.8/site-packages Requires: more-itertools, pluggy, py, wcwidth, attrs, packaging Required-by:

Location — путь до ваших глобальных пакетов.

В большинстве случаев, устанавливать пакеты глобально — плохая идея 🙅‍♂️ Почему? Рассмотрим простой пример:

Допустим у нас есть два проекта: "Project A" и "Project B". Оба проекта зависят от библиотеки Simplejson. Проблема возникает, когда для "Project A" нужна версия Simplejson 3.0.0, а для проекта "Project B" — 3.17.0. Python не может различить версии в глобальном каталоге site-packages — в нем останется только та версия пакета, которая была установлена последней.

Решение данной проблемы — создание виртуального окружения (virtual environment).

Основная цель виртуального окружения Python — создание изолированной среды для python-проектов

Это означает, что каждый проект может иметь свои собственные зависимости, независимо от других проектов.

Настройка виртуального окружения

Один из самых популярных инструментов для создания виртуального окружения — virtualenv. Однако в данной статье мы будем рассматривать более свежий инструмент venv.

Устанавливать venv не нужно — он входит в стандартную библиотеку Python

Создание

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

python -m venv venv

-m — флаг для запуска venv как исполняемого модуля. venv — название виртуального окружения (где будут храниться ваши библиотеки).

В результате будет создан каталог venv/ содержащий копию интерпретатора Python, стандартную библиотеку и другие вспомогательные файлы. Все новые пакеты будут устанавливаться в venv/lib/python3.x/site-packages/.

Содержимое каталога venv.

Виртуальное окружение также можно создать в IDE PyCharm, для этого:

  1. Зайдите в настройки интерпретатора ("Settings" → "Project:<name>" → "Project Interpreter");
  2. Нажмите на шестеренку в верхнем правом углу, выберите "Add..";
  3. Выберите "Virual Enviroment" и задайте параметры.
Создание виртуального окружения в IDE PyCharm.

Активация

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

  • venv\Scripts\activate.bat - для Windows;
  • source venv/bin/activate - для Linux и MacOS.

source выполняет bash-скрипт без запуска дополнительного bash-процесса.

Проверить успешность активации можно по приглашению оболочки. Она будет выглядеть так:

(venv) root@purplegate:/var/test#

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

python -c "import site; print(site.getsitepackages())"

Если вы используете IDE PyCharm, то при открытии проекта он автоматически найдет созданное виртуальное окружение и уведомит о его использовании. Проверить настройки виртуального окружения можно в "Settings" → "Project:<name>" → "Project Interpreter" (путь до интерпретатора должен быть вида [путь до проекта]/venv/Scripts/python.exe).

Интересный факт: в виртуальном окружении вместо команды python3 и pip3, можно использовать python и pip

Автоматическая активация

В некоторых случаях, процесс активации виртуального окружения может показаться неудобным (про него можно банально забыть 🤷‍♀️).

На практике, для автоматической активации перед запуском скрипта, создают скрипт-обертку на bash:

#!/usr/bin/env bash source $BASEDIR/venv/bin/activate python $BASEDIR/my_app.py

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

chmod +x myapp/run.sh ./myapp/run.sh

Деактивация

Закончив работу в виртуальной среде, вы можете отключить ее, выполнив консольную команду:

deactivate

Альтернативы venv

На данный момент существует несколько альтернатив для venv:

  • pipenv - это pipfile, pip и virtualenv в одном флаконе;
  • pyenv - простой контроль версий Питона;
  • poetry - новый менеджер для управления зависимостями;
  • autoenv - среды на основе каталогов;
  • pew - инструмент для управления несколькими виртуальными средами, написанными на чистом Python;
  • rez - интегрированная система конфигурирования, сборки и развертывания пакетов для программного обеспечения.

Стоит ли использовать виртуальное окружение в своей работе — однозначно да. Это мощный и удобный инструмент изоляции проектов друг от друга и от системы. С помощью виртуального окружения можно использовать даже разные версии Python!

Однако рекомендуем присмотреться к более продвинутым вариантам, например к pipenv или poetry.

18
😭
10
😕
12
😃
131
😍
Комментарии (10)
Сначала популярные
Сначала новые
По очереди
xot
1 год 7 месяцев назад

Коротко и по делу. Хорошая статья.

13
ответить
GroveBow
5 мес. 15 дней назад

Использую Windows PowerShell, после команды venv\Scripts\activate.bat приглашение оболочки никак не меняется. Команда '''python -c "import site; print(site.getsitepackages())''' продолжает указывать на глобально установленные библиотеки. Ошибок тоже не выводится. Так и должно быть, или я что-то делаю неправильно?

4
ответить
Александр
1 год 3 месяца назад

Спасибо, помогли разобраться.

3
ответить
Михаил
1 год 6 месяцев назад

Да написано как надо без воды.

2
ответить
Виктор
4 мес. 10 дней назад

Активировать деактивировать это не относится к делу как сделать чтоб в консоли перед приглашением было (fooocus_env) (fooocus)?

0
ответить
Pythonchik
4 мес. 9 дней назад

Если вам нужно запустить программу для генерирования изображений Fooocus с использованием Venv, вот инструкция на Github.

0
ответить
Кызыл-оол Буянды
1 год назад

нормально, буду заглядывать почаще, если забуду)

0
ответить
холоп
1 год назад

как все просто и понятно.

0
ответить
Stavr
3 мес. 4 дня назад

Здравствуйте! Активация

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

venv\Scripts\activate.bat

- для Windows;

куда нужно заходить?

0
ответить
CatRay
3 мес. назад

А где в пункте Автоматическая активация способ для windows?

0
ответить
Может понравиться
Pipenv - современный менеджер зависимостей для Python-проектов
Окружение и пакеты
upd:
Pipenv — современный менеджер зависимостей для Python-проектов