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

Python — один из самых популярных и универсальных языков программирования. Он используется в тысячах приложений для Linux, Windows и macOS. До Ubuntu 23.04 многие пользователи устанавливали пакеты Python одной командой, но в новых версиях система требует использовать изолированные виртуальные окружения.
Почему использовать виртуальные окружения Python в Ubuntu?
Коротко: виртуальное окружение создаёт изолированную директорию с собственными бинарниками Python и pip. Оно помогает:
- Избежать конфликтов зависимостей между проектами.
- Не ломать системные пакеты, управляемые APT.
- Упростить переносимость и развёртывание проектов.
Определение: виртуальное окружение (venv) — это папка с отдельной установкой Python и pip, независимая от системной установки.
Важно: начиная с Ubuntu 23.04 команды pip install и pip3 install в глобальной среде вызовут ошибку “externally-managed-environment” и порекомендуют использовать APT. В большинстве случаев APT не содержит нужных пакетов — поэтому виртуальные окружения остаются лучшим решением.
Как создать виртуальное окружение Python в Ubuntu
- Установите пакет для создания виртуальных окружений:
sudo apt update
sudo apt install python3-venv- Создайте каталог для окружения и само окружение:
python3 -m venv ~/cool_python_appsЭта команда создаст папку ~/cool_python_apps с подкаталогами bin/, lib/ и т. д. Внутри bin/ находятся исполняемые файлы pip, pip3 и соответствующие бинарники Python.
- Установите пакет из виртуального окружения (пример):
~/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)
- sudo apt install python3-venv
- python3 -m venv ~/myenv
- source ~/myenv/bin/activate # или использовать прямые пути
- pip install
- 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.
Важно: поддерживайте документацию проекта, чтобы будущие участники точно знали, как разворачивать и тестировать приложение.
Похожие материалы
Загрузить Mac в Target Disk Mode — быстрый перенос
Как сделать человека выше на фото
Как проверить, заблокирован ли iPhone
Раздача интернета на Android: Wi‑Fi, Bluetooth, USB
Как включить вспышку на iPhone быстро