Альтернативный python

Автор: | 17 октября 2020

В операционной системе Linux, основанной на Debian (Debian, Ubuntu, Mint, Kali и т.д.), может быть установлено несколько версий python. Вы можете запустить команду ls чтобы посмотреть версии, установленные на вашей системе:

$ ls /usr/bin/python*
/usr/bin/python  /usr/bin/python2  /usr/bin/python2.7  /usr/bin/python3  /usr/bin/python3.8  /usr/bin/python3.8m  /usr/bin/python3m

Чтобы проверить, какая версия python используется по умолчанию, выполните:

$ python --version
Python 2.7.8

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

Чтобы изменить версию python для отдельного пользователя, просто создайте alias для домашней директории пользователя. Откройте файл ~/.bashrc и добавьте новый alias чтобы изменить путь к исполняемому файлу python по умолчанию:

alias python='/usr/bin/python3.8'

После внесения изменений перелогиньтесь или перечитайте файл .bashrc:

$ . ~/.bashrc

Проверьте версию python по умолчанию:

$ python --version
Python 3.8.5

Если вы используете не bash, а другую оболочку, внесите алиас в соответствующий .rc-файл.

Изменение версии python для всей системы

Чтобы изменить версию python для всей системы, можно использовать команду update-alternatives. Залогиньтесь как пользователь root (или используйте sudo c далее описанными командами) и выведите список доступных альтернатив python на вашей системе:

# update-alternatives --list python
update-alternatives: error: no alternatives for python

Сообщение выше означает, что команда update-alternatives не распознает альтернативы python. Нужно обновить таблицу альтернатив для команды python, включая все имеющиеся в системе версии, например, python2.7 и python3.8:

# update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
update-alternatives: using /usr/bin/python2.7 to provide /usr/bin/python (python) in auto mode
# update-alternatives --install /usr/bin/python python /usr/bin/python3.8 2
update-alternatives: using /usr/bin/python3.8 to provide /usr/bin/python (python) in auto mode

Ключ --install принимает несколько аргументов, из которых может сделать символическую ссылку. Последний аргумент обозначает приоритет и, если вручную не указано, альтернатива с большим числом будет использована по умолчанию. В данном случае, мы указали приоритет 2 для /usr/bin/python3.8 и, как результат, /usr/bin/python3.8 был автоматически установлен командой update-alternatives как основной python.

# python --version
Python 3.8.5

Далее, можно вывести список всех альтернатив python:

# update-alternatives --list python
/usr/bin/python2.7
/usr/bin/python3.8

Теперь, в любое время, можно переключаться между альтернативами введя ниже указанную команду и вводя номер строки с альтернативой:

# update-alternatives --config python

update-alternatives

# python --version
Python 2.7.8

В случае, если из системы будет удалена одна из версий python, её можно будет удалить из листинга update-alternatives. Например, удалим версию python2.7:

# update-alternatives --remove python /usr/bin/python2.7
update-alternatives: removing manually selected alternative - switching python to auto mode
update-alternatives: using /usr/bin/python3.8 to provide /usr/bin/python (python) in auto mode

По мотивам этой статьи.

Добавить комментарий