
Я установил 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'