20.12.2024

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

server one
HOSTKEY

1. Что такое виртуальное окружение?

Изучаете, как создать виртуальное окружение в Python? Вы попали по адресу! В этой статье мы рассмотрим основные параметры и научим вас с ним работать.

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

Это особенно важно при работе с проектами, использующими разные версии библиотек. Без виртуальных окружений вы рискуете столкнуться с конфликтами версий и неожиданными ошибками. Например, проект A может требовать Flask 2, а проект B — Flask 3. Виртуальные окружения позволяют установить разные версии библиотек для каждого проекта, обеспечивая независимость и стабильность работы.

2. Где и как виртуальное окружение сохраняет зависимости?

При создании виртуального окружения оно создает отдельную папку (по умолчанию venv), где хранятся все установленные пакеты и конфигурации. Обычно оно создается в домашней директории пользователя, так как не рекомендуется создавать и работать в виртуальных окружениях от root.

Путь Содержимое
venv/bin Содержит исполняемые файлы Python, pip и другие инструменты для работы с виртуальным окружением.
venv/lib Хранит библиотеки Python и модули, установленные в окружении.
venv/env Путь до конфигураций виртуального окружения: версии Python, установленных пакетов и других настроек.

3. Сравнение с глобальными установками пакетов

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

  • Конфликты версий.

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

  • Загрязнение системы.

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

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

  • Изоляцию проектов.

    Каждое виртуальное окружение имеет свою копию зависимостей, что предотвращает конфликты версий. Проект A может использовать версию 2.0 библиотеки numpy, а проект B — версию 2.2 без возникновения конфликтов.

  • Оптимизацию ресурсов.

    Только необходимые библиотеки устанавливаются в конкретное виртуальное окружение, экономя место и ресурсы системы. Не нужно скачивать и хранить все пакеты на компьютере, что ускоряет работу системы и освобождает место на диске.

  • Упрощение работы с пакетами.

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

Кроме вышеуказанных преимуществ виртуальные окружения представляют:

  • Повышенную безопасность.

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

  • Упрощение процесса деплоя.

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

4. Как создать виртуальное окружение?

Создание виртуального окружения в Ubuntu

Для начала нужно проверить, какая версия Python установлена в системе:

Python3-version

В Ubuntu 22.04 по умолчанию установлен Python 3.10.

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

sudo apt install python3-venv

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

python3 -m venv my_project_env

Замените my_project_env на желаемое имя вашего виртуального окружения.

Создание виртуального окружение в Windows

Откройте командную строку. Для этого нажмите Win+R, введите cmd и нажмите Enter.

Используя команду cd перейдите в директорию вашего проекта:

cd C:\Users\YourUserName\Documents\MyProject

Создайте виртуальное окружение с именем my_project_env.

python -m venv my_project_env

5. Активация окружения

После создания виртуальное окружение нужно активировать:

  1. Linux/macOS:

    source my_project_env/bin/activate
  2. Windows:

    my_project_env\Scripts\activate

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

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

  • Неправильный путь к исполняемому файлу.
  • Если вы не укажете правильный путь к исполняемому файлу Python при активации виртуального окружения (например source venv/bin/activate), система может не распознать его и выдаст ошибку.
  • Недостающие права доступа.
  • Если у вас недостаточно прав на запись в каталог, где создано виртуальное окружение, вы не сможете активировать его.
  • Несовместимость Python-версий.
  • Активация виртуального окружения может привести к конфликту, если используемая версия Python в окружении не совместима с установленными версиями в системе.
  • Проблемы с конфигурацией.
  • Если у вас есть проблемы с конфигурацией виртуального окружения или файлами установщика (например pip), это может привести к ошибкам при активации виртуального окружения.
  • Неправильный путь к файлу активации.
  • Если вы активируете виртуальное окружение с неправильным путем к файлу активации (activate), система не сможет найти его и выдаст ошибку.
  • Неправильно установленные пакеты.

Если пакеты были неправильно установлены в виртуальное окружение, это может привести к ошибкам при запуске проекта.

6. Деактивация окружения

Чтобы выйти из активного виртуального окружения, используйте команду deactivate. Приглашение командной строки вернет свой вид на прежний, как при логине под обычным пользователем.

7. Как использовать другую версию Python в виртуальном окружении

Как было описано ранее, вы можете установить виртуальные окружения для разных версий Python. Давайте создадим виртуальное окружение для Python 3.11.

Установите Python 3.11 и пакеты поддержки виртуального окружения для этой версии

sudo apt install python3.11
sudo apt install python3.11-venv

Создайте виртуальное окружение для этой версии Python

python3.11 -m venv my_project_311env

Активируйте виртуальное окружение:

source my_project_311env/bin/activate

Проверьте версию Python внутри виртуального окружения:

python-version

Затем выйдите из виртуального окружения командой deactivate и зайдите в окружение my_project_env. Проверьте там версию Python:

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

Другие статьи

29.10.2025

Осенние будни DevOps: Debian 13 и Proxmox VE 9.0 в продакшене HOSTKEY

Новая версия Debian 13 и релиз Proxmox VE 9.0 пришли почти одновременно, вызвав ажиотаж у клиентов. В статье рассказываем, как команда HOSTKEY адаптировала свои процессы, автоматизировала деплой и подготовила инфраструктуру под свежие релизы.

22.10.2025

Чек-лист: 5 признаков, что вашему бизнесу пора переезжать с облака на выделенный сервер

Платите за облако, но всё делаете сами? При бюджете от 5 000 ₽ выделенный сервер выгоднее. Смотрите чек-лист и тесты cloud vs bare metal.

29.09.2025

Что делать, если ваш ноутбук сломался? Как Kasm превратит даже старый планшет в рабочую станцию

Когда технические сбои прерывают работу, Kasm Workspaces становится спасением, превращая устаревшие устройства в полноценные рабочие станции через браузер. В статье рассматривается, как платформа решает проблемы сломанных ноутбуков и дефицита оборудования, сравниваются версии (Community, Starter, Enterprise, Cloud), анализируются требования к ресурсам и результаты тестирования на VPS.

24.09.2025

Замена Google Meet в условиях блокировок: Jitsi Meet и другие альтернативы для бизнеса

Когда Google Meet внезапно начал «тормозить» в России, мы оказались перед выбором: Zoom, Яндекс Телемост, NextCloud или self-hosted решения. После тестов мы остановились на Jitsi Meet на VPS и проверили его в боевых условиях. Делимся опытом и подводными камнями.

18.09.2025

Мониторинг SSL-сертификатов в oVirt Engine: как мы научились спать спокойно благодаря Go и Prometheus

Как избежать простоев и сбоев из-за просроченных SSL-сертификатов? Мы в HOSTKEY разработали простой, но надёжный инструмент на Go для oVirt Engine, интегрированный с Prometheus и Grafana. Теперь система сама предупреждает о проблемах — задолго до их возникновения.

Upload