Как узнать, какая версия 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
Этот способ избыточен для обычной проверки, но демонстрирует, как программно вызвать внешнюю команду.