Переключение интерпретатора Python, используемого по умолчанию, с версии 2.7 на 3.6 в Ubuntu 18.04
В текущий момент язык Python находится в процессе транзита с версии 2.x на 3.x, что влияет на корректность исполнения приложений, которые рассчитывают на ту или иную версию интерпретатора. Обычно, проблемы нет, если используется среда VirtualEnv, когда вы можете выбрать требуемое окружение при его создании, но приложения, которые выполняются вне VirtualEnv могут рассчитывать на ту или иную версию Python. В данной заметке мы рассмотрим простые шаги, как изменить версию Python, используемую по умолчанию, в Ubuntu Linux 18.04.
Для начала выясните какая версия используется в настоящий момент:
Мы видим, что в настоящее время в системе используется интерпретатор Python версии 2.7. Предположим, что вам требуется python 3.6. Проверьте, что он доступен:
Если в процессе выполнения вышеуказанной команды интерпретатор не найден, используйте apt для его установки:
sudo apt update && sudo apt install python3
Теперь вы можете переключить версию интерпретатора, выполнив команду ln :
sudo ln -sfn /usr/bin/python3.6 /usr/bin/python
Запросите версию python повторно:
Как можно видеть, версия интерпретатор изменена на требуемую. Данное решение полезно, когда в систему устанавливается программное обеспечение из сторонних пакетов, которое рассчитывает на то, что по-умолчанию используется Python версии 3.
На одной рабочей машине одновременно может быть установлено несколько версий Python. Это бывает полезно, когда идет работа с некоторыми внешними библиотеками, которые поддерживают разные версии python, либо в силу каких-то других причин нам надо использовать несколько разных версий. Например, на момент написания статьи последней и актуальной является версия Python 3.11 . Но, допустим, необходимо также установить версию 3.10 , как в этом случае управлять отдельными версиями Python?
Windows
На странице загрузок https://www.python.org/downloads/ мы можем найти ссылку на нужную версию:
И также загрузить ее и установить:
Чтобы при использовании интерпретатора Python не прописывать к нему весь путь, добавим при установке его в переменные среды. Но здесь надо учитывать, что в переменных среды может содержаться несколько путей к разным интерпретаторам Python:
Та версия Python, которая находится выше, будет версией по умолчанию. С помощью кнопки «Вверх» можно нужную нам версию переместить в начало, сделав версией по умолчанию. Например, в моем случае это версия 3.11. Соответственно, если я введу в терминале команду
python --version
или
py --version
то консоль отобразит версию 3.11:
C:\python>python --version Python 3.11.0
Для обращения к версии 3.10 (и всем другим версиям) необходимо использовать указывать номер версии:
C:\python>py -3.10 --version Python 3.10.9
например, выполнение скрипта hello.py с помощью версии 3.10:
Подобным образом можно вызывать и другие версии Python.
MacOS
На MacOS можно установить разные версии, например, загрузив с официального сайта пакет установщика для определенной версии.
Для обращения к определенной версии Python на MacOS указываем явным образом подверсию в формате python3.[номер_подверсии] . Например, у меня установлена версия Python 3.10. Проверим ее версию:
Аналогично обращении к версии python3.9 (при условии если она установлена)
К примеру выполнение скрипта hello.py с помощью версии python 3.10:
Linux
На Linux также можно установить одновременно несколько версий Python. Например, установка версий 3.10 и 3.11:
Одна из версий является версий по умолчанию. И для обращения к ней достаточно прописать python3 , например, проверим версию по умолчанию:
Для обращения к другим версиям надо указывать подверсию:
python3.10 --version python3.11 --version
Например, выполнение скрипта hello с помощью версии Python 3.10:
Но может сложиться ситуация, когда нам надо изменить версию по умолчанию. В этом случае применяется команда update-alternatives для связывания определенной версии Python с командой python3. Например, мы хотим установить в качестве версии по умолчанию Python 3.11. В этом случае последовательно выполним следующие команды:
Числа справа указывают на приоритет/состояние. Так, для версии 3.11 указан больший приоритет, поэтому при обращении к python3 будет использоваться именно версия 3.11 (в моем случае это Python 3.11.0rc1)
Как при вводе "python" в терминал запускать самую последнюю версию python? Linux
Как сделать так, чтобы при вводе в терминале python запускалась не вторая, а какая-либо ещё версия интерпретатора? Например, 3.5 или 3.6 То есть как реализовать такую фичу, чтобы когда я вводил python module.py в терминале, скрипт запускался с третьей версией python'a, а не со второй?
1 ответ 1
Перед тем, как делать всё, что описано далее, внимательно прочтите
Очень не рекомендуется менять ссылки. Дело в том, что есть программы, зависимые от старых версий python. И если изменить ссылку на программу, то может возникнуть конфликт импорта библиотек, а если библиотеки всё же найдутся, то не факт, что их устройство не изменилось со сменой версии python, поэтому опасно менять ссылки на стандартные названия. Как быть? Описано в конце.
Команда ln
Сейчас у меня в каталоге /usr/bin/ файл python ссылается на python2.7 , а python3 - на python3.5 . Я же хочу, чтобы python ссылался на python3.5 , а python3 ссылался на python3.6 . Как это реализовать?
Для того, чтобы нам настроить запуск команд по своему усмотрению, можно воспользоваться командой ln. Это команда для создания ссылок. Чтобы вызвать помощь можно набрать в терминале ln --help
Для тех, кто всё равно так хочет
Напишем в терминале следующий код:
sudo ln -f -v /usr/bin/python3.5 /usr/bin/python # атрибут -f означает, что мы удалим текущую существующую ссылку # атрибут -v - показать результат выполнения
Проверим, что теперь python ссылается на python3.5 . Выполнив python --version мы увидим следующее: Python 3.5.2
Давайте изменим ссылку для python3 ?
sudo ln -f -v /usr/bin/python3.6 /usr/bin/python3
Проверяем, что всё сработало корректно:
python3 --version # Python 3.6.0+
Такой подход плох тем, что мы меняем адреса ссылок у стандартных бинарников, создавая жёсткие ссылки. Это чревато отказом в работе некоторых программ, которые зависимы от старых версий python и запускают интерпретатор с помощью таких строк в начале скрипта:
#!/usr/bin/python # или #!/usr/bin/env python
Создавайте свои ссылки!
Для этого нам поможет атрибут -s (символьная ссылка) команды ln
Давайте создадим ссылку на python3.5 с именем p35 :