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

Управление версиями Python на Linux и в проектах

• 8 min read • Python • Обновлено 28 Nov 2025
Управление версиями Python — установка и окружения
Управление версиями Python — установка и окружения

Оглавление

  • Как установить другую версию Python
  • Управление проектами с помощью виртуальных окружений
  • Создание окружения с venv
  • Создание окружения с virtualenv
  • Создание окружения с Miniconda/Anaconda
  • Запуск скрипта Python3 командой “python”
  • Альтернативные подходы и когда они уместны
  • Сравнение инструментов и рекомендации
  • Часто задаваемые вопросы

Введение

Язык программирования Python появился в 1991 году и с тех пор постоянно развивается: функции добавляются и удаляются, поведение может меняться. Из-за этого код, написанный для одной версии Python, может не работать в другой. Чтобы избежать проблем с совместимостью и не ломать системные зависимости операционной системы, важно уметь:

  • устанавливать нужные версии Python рядом с системной;
  • изолировать зависимости проектов;
  • выбирать правильный инструмент под задачу (venv, virtualenv, Conda, pyenv, Docker).

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

Как установить другую версию Python

Самый простой путь — воспользоваться системным пакетным менеджером (apt для Ubuntu/Debian). На многих Linux-дистрибутивах Python уже установлен: чаще всего доступны python2 и python3. Проверьте их наличие так:

# Проверить python3
python3 --version

# Проверить python2
python2 --version

Если в вашей системе не хватает нужной версии, для Ubuntu-подобных дистрибутивов удобно использовать PPA deadsnakes, который содержит сборки нескольких версий Python.

  1. Установите утилиты для работы с PPA, если они не установлены:
sudo apt-get update
sudo apt-get install software-properties-common
  1. Добавьте репозиторий deadsnakes:
sudo add-apt-repository ppa:deadsnakes/ppa
  1. Установите нужную версию (замените 3.10 на требуемую версию):
sudo apt update
sudo apt install python3.10
  1. Проверьте установку:
python3.10 --version

Важно: даже после установки новой версии системная команда python3 по умолчанию может по-прежнему ссылаться на ранее установленную версию.

Если вы хотите переключать версию, используйте механизм alternatives:

# Зарегистрировать версии в update-alternatives (пример)
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.10 2
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1

# Выбрать версию вручную
sudo update-alternatives --config python

Примечание: изменение системного /usr/bin/python может повлиять на системные скрипты. На серверах и рабочих станциях лучше оставлять системный Python неизменным и использовать виртуальные окружения или инструменты управления версиями для проектов.

Список доступных версий Python на терминале

Управление проектами с помощью виртуальных окружений

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

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

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

  • Изоляция зависимостей между проектами;
  • Возможность использовать разные версии Python в разных проектах;
  • Упрощённое развёртывание и воспроизводимость окружения.

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

venv — штатный модуль для создания виртуальных окружений, входит в стандартную библиотеку начиная с Python 3.3. Для использования venv убедитесь, что установлен пакет -venv для вашей версии Python:

sudo apt update
sudo apt install python3.10-venv

Создание и активация окружения:

# Создать окружение в каталоге venv
python3 -m venv venv

# Или создать окружение с именем mte
python3 -m venv mte

# Активировать окружение
source venv/bin/activate

# Установить пакет внутри окружения
python -m pip install requests

# Деактивировать окружение
deactivate

Aльтернативы: на Windows активация выглядит как venv\Scripts\activate.

Активация виртуального окружения venv в терминале

Советы по venv:

  • Храните файл зависимостей requirements.txt и используйте python -m pip install -r requirements.txt;
  • Не добавляйте каталог окружения в систему контроля версий (добавьте в .gitignore);
  • Для проектов используйте явное указание интерпретатора в CI/CD или shebang в скриптах.

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

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

Установка и базовое использование:

python3 -m pip install virtualenv
virtualenv venv
source venv/bin/activate

Создание окружения с конкретной версией интерпретатора:

virtualenv --python=/usr/bin/python2.6 venv

Применение: virtualenv удобно, если вы работаете с очень старыми проектами на Python2 или хотите более детально контролировать окружение.

Создание окружения virtualenv в терминале

Создание виртуального окружения с Miniconda/Anaconda

Conda — менеджер пакетов и окружений, который поддерживает не только Python, но и другие языки и бинарные зависимости. Anaconda включает много научных пакетов, Miniconda — минимальная установка с Conda.

Установка Miniconda:

  1. Скачайте скрипт установки Miniconda соответствующей архитектуры и версии Python.
  2. Запустите установщик в терминале:
./Miniconda3.sh

После установки создаётся базовое окружение base. Пример команд:

# Активировать base
conda activate base

# Создать окружение с Python 3.7
conda create -n myenv python=3.7
conda activate myenv

# Установить пакет
conda install numpy

Плюсы Conda:

  • Управляет версиями бинарных зависимостей (BLAS, LAPACK и т.д.);
  • Удобен для дата-сайенс задач и пакетов, которые тяжело собирать из исходников;
  • Позволяет изолировать не только pip-пакеты, но и системные библиотеки.

Недостатки:

  • Образ окружения может быть больше по размеру;
  • Разница между pip и conda-пакетами может приводить к конфликтам — внимательно читайте документацию.

Окружения Conda в терминале

Запуск Python3 скрипта командой “python”

На некоторых системах удобнее вводить просто python вместо python3. В Ubuntu есть пакет python-is-python3, который сопоставляет python с python3-бинарником:

sudo apt update
sudo apt install python-is-python3

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

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

Помимо venv/virtualenv/conda существует набор инструментов для управления версиями и окружениями, которые полезны в разных сценариях:

  • pyenv — переключение между несколькими локальными версиями Python; умеет устанавливать произвольные сборки Python в пользовательскую директорию.
  • asdf — менеджер версий для нескольких языков (через плагины: python, nodejs, ruby и т.д.).
  • Docker — контейнеры гарантируют, что среда полностью воспроизводима и изолирована на уровне ОС.
  • Сборка Python из исходников — когда нужна специфическая конфигурация или патчи.

Краткий сценарий выбора:

  • Если нужно просто изолировать зависимости проекта — venv или virtualenv.
  • Для научных стеков и бинарных зависимостей — Conda.
  • Для переключения версий интерпретатора на уровне пользователя — pyenv.
  • Для полного контроля операционной системы и воспроизводимости — Docker.

Сравнение инструментов — таблица

ИнструментЧто изолируетПодходит дляПростотаКогда выбрать
venvpip-пакеты, интерпретатор (локальная копия)большинство приложений на Python3высокаяпростые веб-приложения, CLI
virtualenvкак venv + дополнительные возможностистарые проекты, Python2высокаяпроекты с разными версиями пакетов
Condaпакеты + бинарные зависимостиData Science, MLсредняяокружения с нативными библиотеками
pyenvверсии интерпретатораразработка, локальные машинысредняянужно много версий Python
Dockerвся ОС, все зависимостипродакшен, CIнизкая (сложнее)контейнеризация и воспроизводимость

Как выбрать версию Python для проекта — мини-методология

  1. Определите требования зависимостей (какие версии пакетов поддерживаются).
  2. Проверьте совместимость с целевыми средами (серверы, CI, PaaS).
  3. Выберите минимально необходимую версия Python с прицелом на безопасность и поддержку (LTS и поддерживаемые ветки).
  4. Задокументируйте выбор в README и в конфигурации окружения (requirements.txt / environment.yml / pyproject.toml).
  5. В CI явно укажите интерпретатор (например, setup-python в GitHub Actions или matrix в GitLab CI).

Ментальные модели и эвристики

  • Правило «не трогать системный Python»: системный интерпретатор должен оставаться в исходном состоянии.
  • Локальное правило «один проект — одно окружение»: каждое приложение имеет собственное окружение с зафиксированными версиями.
  • Эвристика «новее ≠ лучше во всём»: для продакшена выбирайте версии с активной поддержкой безопасности.

Роли — чеклисты

Разработчик:

  • Использовать виртуальное окружение (venv/virtualenv/conda).
  • Задокументировать зависимости.
  • Наличие тестов и CI, исполняемых в том же окружении.

Системный администратор / DevOps:

  • Не менять системный python без причины.
  • Использовать pyenv или контейнеры для разных приложений.
  • Автоматизировать установку и обновления через конфигурационные менеджеры (Ansible, Puppet).

Дата-сайентист:

  • Рассмотреть Conda для бинарных пакетов.
  • Фиксировать версии numpy, scipy, pandas и т.д.
  • Проверять совместимость между pip и conda-пакетами.

Когда управление версиями может подвести (примеры ошибок)

  • Установка новой системной версии сломала системный скрипт, который ожидал старый API.
  • Конфликты между pip и conda-пакетами в одном окружении.
  • Неправильно настроенный CI использует системный Python, а не окружение проекта.

Практические сценарии и тесты приёмки

Критерии приёмки для окружения проекта:

  • Скрипт установки зависимостей reproducible: команда установки должна возвращать одинаковый набор пакетов.
  • Тестовый запуск приложения проходит локально и в CI.
  • README описывает точную команду для активации окружения и запуска.

Тестовые кейсы:

  • Создать окружение, установить зависимости, запустить тесты — ожидается успешный статус.
  • Попытка установить конфликтующие пакеты должна дать понятную ошибку.

Безопасность и конфиденциальность

  • Не храните секреты (ключи, пароли) в requirements, environment.yml или в репозитории.
  • Обновляйте пакеты по расписанию, особенно патчи безопасности.
  • В продакшне используйте тщательно протестированные образы или зафиксированные версии зависимостей.

Decision flowchart (простой выбор инструмента)

flowchart TD
  A[Нужно установить/управлять Python] --> B{Цель}
  B -->|Изоляция зависимостей проекта| C[venv / virtualenv]
  B -->|Наука/ML с бинарными библиотеками| D[Conda]
  B -->|Много версий интерпретатора| E[pyenv]
  B -->|Воспроизводимая среда ОС| F[Docker]
  C --> G[Используйте requirements.txt или pyproject.toml]
  D --> H[Используйте environment.yml и conda-forge]

Часто задаваемые вопросы

Может ли установка разных версий Python сломать систему?

Да, если системные утилиты зависят от определённой версии или поведения Python. Изменяйте системный интерпретатор осмотрительно и предпочтительнее использовать виртуальные окружения или контейнеры.

Где виртуальные окружения хранят пакеты?

Они хранятся в каталоге окружения (обычно скрытом каталоге проекта, например ./venv), где находятся локальные копии интерпретатора, pip и установленных пакетов.

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

Удалите каталог самого окружения (например rm -rf venv). Это удалит все локальные пакеты и настройки окружения.

Когда стоит использовать pyenv?

Используйте pyenv, если вы часто переключаетесь между версиями Python для разработки или вам нужно тестировать проект на нескольких версиях интерпретатора.

Почему иногда pip устанавливает глобально, а не в окружении?

Возможно, вы не активировали окружение или используете системный pip. Всегда активируйте окружение и запускайте python -m pip, чтобы быть уверенным, что пакеты попадут в локальную среду.

Заключение

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

  • Не трогать системный Python без крайней необходимости;
  • Использовать виртуальные окружения (venv/virtualenv) для приложений;
  • Применять Conda для проектов с тяжёлыми бинарными зависимостями;
  • pyenv/asdf — для переключения версий интерпретатора на рабочей машине;
  • Docker — для полной воспроизводимости окружения.

Следуя этим рекомендациям, вы уменьшите количество конфликтов версий, упростите развёртывание и улучшите воспроизводимость разработки.

Image credit: Hitesh Choudhary via Unsplash. All screenshots by Hrishikesh Pathak.

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

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро