Краткое резюме

Краткое резюме

Я установил python3.7, однако не знаю, как сделать его Python по умолчанию.

См. ниже:

~/Documents/robosuite$ python3.7
Python 3.7.1 (default, Oct 22 2018, 11:21:55) 
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 
KeyboardInterrupt
>>> 

~/Documents/robosuite$ python3
Python 3.6.7 (default, Oct 22 2018, 11:32:17) 
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

Я хочу, чтобы python3.7 отображался при использовании командыpython3

решение1

Простое решение — отредактировать .bashrcи вставить эту строку:

alias python3=python3.7

Всякий раз, когда вы будете писать, python3он заменит это на python3.7.

Или вы можете использовать update-alternativesпредпочтительную команду, например:

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2

Так что здесь python3.7будет более высокий приоритет, чем python3.6. Тогда используйте:

sudo update-alternatives --config python3

Нажмите клавишу Enter, если вы удовлетворены.

решение2

Я хотел бы подробнее остановиться напредыдущий ответпоскольку два подхода не эквивалентны, и один из них может даже сломать систему. Проблема в том, что есть две разные вещи, которые можно попытаться сделать, "изменяя версию Python по умолчанию".

Краткое резюме

Добавлять

alias python3=python3.7

к .bashrc.

Делатьнетиспользуйте update-alternativesдля изменения версии Python по умолчанию, так как это приведет к сбою системных приложений.

Более подробная информация

Псевдоним Bash

Во-первых, для интерактивной оболочки нужно просто легко открыть нужный Python, написав

$ python

или

$ python3

Это достигается путем добавления строки

alias python3=python3.7

в .bashrc. Если вы используете другую оболочку, добавьте это в соответствующий файл конфигурации. Это также имеет то преимущество, что если это вызывает проблемы по какой-либо причине, можно просто удалить проблемную строку .bashrcи перезапустить терминал.

update-alternatives

Второе, что можно подразумевать под «изменением версии Python по умолчанию», — это изменение версии Python по умолчанию длявсепрограммы, в том числе и те, которые не запускаются из интерактивной оболочки. Это результат запуска

$ sudo update-alternatives --config python3

Однако если вы запустите это в чистой установке Debian/Ubuntu, вы заметите, что команда возвращает

update-alternatives: error: no alternatives for python3

даже если у вас установлено несколько версий python 3 через apt. Для этого есть очень веская причина.

Проблема в том, что многие системные приложения используют python, и в зависимости от конкретного дистрибутива многие используют python 3. Изменение версии, вызываемой командой python3глобально, заставит эти приложения использовать эту версию. Хотя разные версии python 3 в значительной степени совместимы, все еще естьфункции, перемещенные и удаленные между выпусками. Если системное приложение использует эти функции, то переход python3на более новую версию приведет к поломке приложения.

Тестирование

Я создал новую установку Ubuntu 18.04 в виртуальной машине. Добавление псевдонима bash не вызвало немедленных проблем.

Использование update-alternativesметода вызвало проблемы с apt. В частности, я получил

ModuleNotFoundError: No module named 'apt_pkg'

Исправление вашей системы, если вы запустили update-alternativesметод

Если мы запустили update-alternativesи сломали apt, мы все еще можем исправить систему. Во время моего тестирования терминал все еще мог быть открыт. Можно вернуться к python по умолчанию, запустив

$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.X 1000

где 3.X — это исходная версия python 3 вашей системы, а 1000 — это просто некий высокий приоритет, чтобы убедиться, что он находится наверху. Затем можно запустить

$ sudo update-alternatives --config python3

и убедитесь, что выбран оригинальный системный python. Перезагрузите систему, и она вернется в нормальное состояние.

решение3

$ sudo su
$ update-alternatives --install /usr/bin/python python /usr/bin/python3 1

... когда уже python3.7установлено

решение4

Для машин, на которых нет команды update-alternatives, можно применить быстрое и грубое решение, например:

sudo ln -sf `which python3.7` `which python3`

Обычно (по крайней мере, во всех случаях, которые я видел) python3/python2/python — это всего лишь символические ссылки на исполняемый файл python определенной версии. Изменение этой символической ссылки должно изменить 'default python'

Связанный контент