Linux выбрать интерпретатор python

Переключение интерпретатора 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. Проверьте, что он доступен:

$ whereis python3 python3: /usr/bin/python3.6m /usr/bin/python3.6m-config /usr/bin/python3.6-config /usr/bin/python3.6 /usr/bin/python3 /usr/lib/python3.7 /usr/lib/python3.6 /usr/lib/python3 /etc/python3.6 /etc/python3 /usr/local/lib/python3.6 /usr/include/python3.6m /usr/include/python3.6 /usr/share/python3 /usr/share/man/man1/python3.1.gz

Если в процессе выполнения вышеуказанной команды интерпретатор не найден, используйте apt для его установки:

sudo apt update && sudo apt install python3

Теперь вы можете переключить версию интерпретатора, выполнив команду ln :

sudo ln -sfn /usr/bin/python3.6 /usr/bin/python

Запросите версию python повторно:

Как можно видеть, версия интерпретатор изменена на требуемую. Данное решение полезно, когда в систему устанавливается программное обеспечение из сторонних пакетов, которое рассчитывает на то, что по-умолчанию используется Python версии 3.

Читайте также:  Linux stop job is running

Источник

Linux выбрать интерпретатор python

На одной рабочей машине одновременно может быть установлено несколько версий Python. Это бывает полезно, когда идет работа с некоторыми внешними библиотеками, которые поддерживают разные версии python, либо в силу каких-то других причин нам надо использовать несколько разных версий. Например, на момент написания статьи последней и актуальной является версия Python 3.11 . Но, допустим, необходимо также установить версию 3.10 , как в этом случае управлять отдельными версиями Python?

Windows

На странице загрузок https://www.python.org/downloads/ мы можем найти ссылку на нужную версию:

Управление несколькими версиями Python

И также загрузить ее и установить:

Установка разных версий Python на Windows

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

Установка разных версий Python на Windows в переменные среды

Та версия 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:

sudo apt-get install python3.10 sudo apt-get install python3.11

Одна из версий является версий по умолчанию. И для обращения к ней достаточно прописать python3 , например, проверим версию по умолчанию:

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

python3.10 --version python3.11 --version

Например, выполнение скрипта hello с помощью версии Python 3.10:

Но может сложиться ситуация, когда нам надо изменить версию по умолчанию. В этом случае применяется команда update-alternatives для связывания определенной версии Python с командой python3. Например, мы хотим установить в качестве версии по умолчанию Python 3.11. В этом случае последовательно выполним следующие команды:

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 2

Числа справа указывают на приоритет/состояние. Так, для версии 3.11 указан больший приоритет, поэтому при обращении к python3 будет использоваться именно версия 3.11 (в моем случае это Python 3.11.0rc1)

Управление версиями Python в linux

sudo update-alternatives --config python3

можно изменить версию по умолчанию

Источник

Как при вводе "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 :

sudo ln -f -s -v /usr/bin/python3.5 /usr/bin/p35 '/usr/bin/p35' -> '/usr/bin/python3.5' 

Также если мы зайдём в каталог /usr/bin/ и поищем p35 , то мы увидим уже не бинарный файл, а файл-ссылку.

Проверим получилось ли у нас сделать ссылку, выполнив в терминале:

Источник

Оцените статью
Adblock
detector