Гид по технологиям

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

4 min read Linux Обновлено 26 Dec 2025
Создать виртуальное окружение Python в Ubuntu
Создать виртуальное окружение Python в Ubuntu

Бежевая змея (питон) на коричневой ветке дерева

Python — один из самых популярных и универсальных языков программирования. Он используется в тысячах приложений для Linux, Windows и macOS. До Ubuntu 23.04 многие пользователи устанавливали пакеты Python одной командой, но в новых версиях система требует использовать изолированные виртуальные окружения.

Почему использовать виртуальные окружения Python в Ubuntu?

Ошибка pip install в Ubuntu 23.04

Коротко: виртуальное окружение создаёт изолированную директорию с собственными бинарниками Python и pip. Оно помогает:

  • Избежать конфликтов зависимостей между проектами.
  • Не ломать системные пакеты, управляемые APT.
  • Упростить переносимость и развёртывание проектов.

Определение: виртуальное окружение (venv) — это папка с отдельной установкой Python и pip, независимая от системной установки.

Важно: начиная с Ubuntu 23.04 команды pip install и pip3 install в глобальной среде вызовут ошибку “externally-managed-environment” и порекомендуют использовать APT. В большинстве случаев APT не содержит нужных пакетов — поэтому виртуальные окружения остаются лучшим решением.

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

Установка python3-venv в Ubuntu

  1. Установите пакет для создания виртуальных окружений:
sudo apt update
sudo apt install python3-venv
  1. Создайте каталог для окружения и само окружение:
python3 -m venv ~/cool_python_apps

Эта команда создаст папку ~/cool_python_apps с подкаталогами bin/, lib/ и т. д. Внутри bin/ находятся исполняемые файлы pip, pip3 и соответствующие бинарники Python.

  1. Установите пакет из виртуального окружения (пример):
~/cool_python_apps/bin/pip3 install castero

После установки исполняемый файл приложения также появится в ~/cool_python_apps/bin/.

Краткая проверка работоспособности:

~/cool_python_apps/bin/python3 -m pip --version
~/cool_python_apps/bin/python3 -c "import sys; print(sys.prefix)"

Если sys.prefix указывает на вашу папку окружения — всё настроено верно.

Вернуть старое поведение pip (опыт «как раньше»)

Если вы хотите использовать pip3 как раньше (без полного указания путей), можно добавить alias и PATH в ваш профиль:

python3 -m venv ~/cool_python_apps
echo 'alias pip3="~/cool_python_apps/bin/pip3"' >> ~/.bashrc
source ~/.bashrc
export PATH=~/cool_python_apps/bin:$PATH

После этого команда pip3 install package_name будет использовать pip3 из вашего окружения. Повторите для других бинарников (pip, pip3.11, python), если нужно.

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

Альтернативные подходы

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

  • pipx — для установки и запуска одиночных CLI-приложений в изолированных окружениях.
  • Conda/Mamba — для научных стеков и сложных зависимостей (включая бинарные пакеты).
  • Snap/Flatpak/AppImage — пакуют приложения в контейнеры, независимые от системы.
  • Docker — изолирует весь стек окружения на уровне контейнера.

Когда это не сработает: если приложение требует интеграции с системными библиотеками или dconf/keyring, контейнеризация или пакеты APT/Snap могут быть более подходящими.

Мини‑методика: быстрый набор шагов (cheat sheet)

  1. sudo apt install python3-venv
  2. python3 -m venv ~/myenv
  3. source ~/myenv/bin/activate # или использовать прямые пути
  4. pip install
  5. deactivate — выйти из окружения

Совет: используйте requirements.txt или pip freeze > requirements.txt для фиксации зависимостей.

Чеклист ролей

  • Для разработчика:

    • Создать и зафиксировать requirements.txt.
    • Добавить инструкцию по созданию venv в README.
  • Для DevOps/инженера развертывания:

    • В CI использовать виртуальное окружение или контейнер.
    • Проверять, что APT не пересекается с pip-зависимостями.
  • Для обычного пользователя:

    • Использовать pipx для глобальных CLI-инструментов.
    • Не устанавливать pip в системную директорию без вenv.

Критерии приёмки

  • pip в окружении устанавливает пакет без ошибок.
  • python запуск из окружения использует правильный sys.prefix.
  • Приложение запускается локально и не конфликтует с системными пакетами.

Тесты приемки:

  • pip install завершился с кодом 0.
  • which python указывает на ~/myenv/bin/python.
  • Система обновления пакетов (apt) не трогает venv-файлы.

Советы по миграции и совместимости

  • Для существующих проектов: экспортируйте зависимости через pip freeze и установите их в новом venv.
  • Для сервисов systemd: прописывайте абсолютные пути к бинарникам окружения или используйте ExecStartPre для активации окружения.
  • Для CI: создавайте venv в рабочей директории сборки; не полагайтесь на глобальный pip.

Краткое объявление для команды (100–200 слов)

Начиная с Ubuntu 23.04, системная политика запрещает использование pip install в глобальной среде, чтобы защитить файловую систему и управление пакетами через APT. Это не баг — это изменение безопасности. Рекомендуется создавать виртуальные окружения Python для каждого проекта: установить python3-venv, создать venv и устанавливать пакеты внутри него. Для CLI-инструментов рассмотрите pipx. Для научных и бинарно-зависимых стеков используйте Conda/Mamba. Обновите инструкции в README и CI, чтобы гарантировать воспроизводимость сборок и избежать конфликтов зависимостей.

Короткий глоссарий (1 строка)

venv — изолированная папка с установленным Python и pip для отдельного проекта.

Итог

  • Установите python3-venv и создайте venv для проектов.
  • Устанавливайте пакеты внутри venv, а не глобально.
  • Для простых CLI используйте pipx; для контейнеризации — Docker/Conda.

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

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Загрузить Mac в Target Disk Mode — быстрый перенос
macOS

Загрузить Mac в Target Disk Mode — быстрый перенос

Как сделать человека выше на фото
Фотография

Как сделать человека выше на фото

Как проверить, заблокирован ли iPhone
Смартфоны

Как проверить, заблокирован ли iPhone

Раздача интернета на Android: Wi‑Fi, Bluetooth, USB
Mobile

Раздача интернета на Android: Wi‑Fi, Bluetooth, USB

Как включить вспышку на iPhone быстро
Гайды

Как включить вспышку на iPhone быстро

Темизация Android Oreo: Substratum + Andromeda
Android.

Темизация Android Oreo: Substratum + Andromeda