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

Раздел: Управление пакетами -> Проверка версии

Основные способы проверки версии Python в Ubuntu

Как быстро и надёжно узнать версию Python 3, установленного по умолчанию?

В современных выпусках Ubuntu (начиная с 20.04) предустановлен Python 3. Самый простой и прямолинейный способ - выполнить команду в терминале:

python3 --version

версия python ubuntu (версия python в ubuntu)

Результат будет выглядеть примерно так:

Python 3.10.12

Команда python3 обращается к исполняемому файлу, который символической ссылкой или напрямую указывает на интерпретатор. Если требуется узнать точную версию вместе с номером сборки, можно использовать флаг -V (заглавная буква) или --version - результат одинаков.

Типичная ошибка: сообщение 'python3' not found. Это означает, что пакет python3 не установлен. Решение - установить его через менеджер пакетов:

sudo apt update && sudo apt install python3

Как проверить версию Python 2, если он ещё присутствует в системе?

В некоторых легаси-окружениях может быть установлен Python 2. Для проверки:

python --version

Если система настроена на использование Python 2 по умолчанию (т.е. команда python ссылается на Python 2), то будет показано что-то вроде Python 2.7.18. В Ubuntu 20.04 и новее пакет python2 не входит в состав, но его можно установить отдельно.

Проблема: команда python может отсутствовать или выдавать ошибку. Это нормально, так как в современных системах рекомендуется использовать python3. Для установки Python 2 (если это действительно необходимо):

sudo apt install python2

После установки команда python2 --version будет работать.

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

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

/usr/bin/python3 --version

Это позволяет исключить влияние переменных окружения или символических ссылок.

Как получить список всех установленных версий Python?

Ubuntu обычно хранит исполняемые файлы в каталоге /usr/bin. Можно просмотреть все файлы, начинающиеся на python:

ls /usr/bin/python*

Вывод покажет, например:

/usr/bin/python3  /usr/bin/python3.10  /usr/bin/python3.10-config

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

Ошибка: команда выводит No such file or directory. Это говорит о том, что Python не установлен. Следует выполнить установку через apt.

Как определить установленные пакеты Python через менеджер пакетов apt?

Менеджер пакетов хранит информацию об установленных программах. Для поиска пакетов, связанных с Python, используется:

apt list --installed 2>/dev/null | grep -i python

Результат отобразит строки вида:

python3/stable,now 3.10.12-1~22.04.3 amd64 [installed,automatic]
python3.10/stable,now 3.10.12-1~22.04.3 amd64 [installed,automatic]

Этот метод показывает номера версий в имени пакета, но не всегда даёт точную минорную версию интерпретатора (например, может быть указан пакет python3.10, но внутри может быть патч-версия 3.10.12).

Как узнать, какая версия Python выбрана по умолчанию при вызове python через механизм альтернатив?

В Ubuntu для управления символическими ссылками используется update-alternatives. Просмотреть текущие настройки:

update-alternatives --display python

Если альтернатива не настроена, команда сообщит python - auto mode ... link currently points to /usr/bin/python3 или укажет на отсутствие. Для детального просмотра всех зарегистрированных интерпретаторов:

update-alternatives --list python

Проблема: alternative only available if a slave alternative is installed. Решение - явно зарегистрировать нужные версии через update-alternatives --install. Это выходит за рамки простой проверки, но упоминается здесь для полноты.

Как проверить версию Python прямо внутри скрипта или в интерактивном режиме?

Иногда требуется программно получить информацию о версии. В Python для этого используется модуль sys:

python3 -c "import sys; print(sys.version)"

Результат будет многострочным, включая детали сборки:

3.10.12 (main, Nov 20 2023, 15:14:05)
[GCC 11.4.0]

Более компактное число можно получить через sys.version_info:

python3 -c "import sys; print(sys.version_info[:3])"
(3, 10, 12)

Эти методы удобны в автоматизированных сценариях, где требуется сравнение версий.

Ошибка: ImportError: No module named sys - невозможна, так как sys является встроенным модулем. Если появляется другая ошибка, вероятно, интерпретатор не запущен.

Как получить версию Python, используемую pip?

Инструмент pip привязан к конкретному интерпретатору. Узнать версию Python, с которой работает pip, можно командой:

pip --version

Вывод содержит строку вида:

pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)

Это полезно, когда в системе установлено несколько версий Python и нужно понять, какой pip соответствует какому интерпретатору.

Проблема: команда pip может отсутствовать. В Ubuntu рекомендуется использовать pip3 или python3 -m pip.

Расширенные примеры проверки версии Python в Ubuntu

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

1. Получение подробной информации через sys.version_info

Пример
python3 -c "import sys; ver = sys.version_info; print(f'{ver.major}.{ver.minor}.{ver.micro}')"
3.10.12

Позволяет извлечь major, minor и micro отдельно для программного сравнения.

2. Использование модуля platform

Пример
python3 -c "import platform; print(platform.python_version())"
3.10.12

Метод python_version() возвращает строку, а python_version_tuple() - кортеж.

3. Сравнение версий в скрипте с помощью distutils.version

Пример
python3 -c "
from distutils.version import LooseVersion
required = LooseVersion('3.8')
current = LooseVersion('3.10.12')
if current >= required:
    print('Версия подходит')
else:
    print('Требуется обновление')"
Версия подходит

Применяется в сценариях сборки или установки, когда нужно проверить минимальную версию интерпретатора.

4. Проверка версии через make-функцию shell

Пример
PYTHON_VER := $(shell python3 --version 2>&1 | cut -d' ' -f2)
.PHONY: info
info:
	@echo "Python version: $(PYTHON_VER)"

При выполнении make info будет выведено: Python version: 3.10.12. Этот метод удобен, когда нужно использовать версию Python в переменных Makefile.

Python version: 3.10.12

5. Использование pyenv для просмотра установленных версий

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

Пример
pyenv versions

Пример вывода:

* 3.10.12 (set by /home/user/.python-version)
  3.11.6

Звёздочка указывает на активную версию. Это позволяет управлять несколькими версиями Python без конфликтов с системным интерпретатором.

6. Проверка версии Python внутри Docker-контейнера

Если приложение работает в контейнере, можно выполнить:

Пример
docker run --rm python:3.10-slim python --version
Python 3.10.13

Полезно для тестирования совместимости с разными образами.

7. Получение номера версии через /proc/self/exe (продвинутый уровень)

Пример
python3 -c "import subprocess; out = subprocess.run(['/usr/bin/python3', '--version'], capture_output=True, text=True); print(out.stdout.rstrip())"
Python 3.10.12

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

Версия Python в Ubuntu - comments

En
версия python ubuntu (python)