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


63

Я использую Ubuntu 16.04 LTS. Я python3установил. Установлены две версии, python 3.4.3и python 3.6. Всякий раз, когда я использую python3команду, она принимает python 3.4.3по умолчанию. Я хочу использовать python 3.6с python3.

python3 --version шоу version 3.4.3

Я устанавливаю, ansibleкоторый поддерживает version > 3.5. Поэтому, когда я набираю ansible в терминале, он выдает ошибку из-заpython 3.4


Какая команда используется для запуска Python 3.6?

Команда выглядит так: - python3.6
codeclue

2
Что ты sudo update-alternatives --config python3говоришь?
Микаэль Кьер

update-альтернативы: ошибка: нет альтернативы для python3
codeclue

Смотрите мой комментарий в ответе ниже о том, как использовать ansible с определенной версией python3. Вы также можете рассмотреть возможность удаления Python 3.4.
Микаэль Кьер

Ответы:


86

Из комментария:

sudo update-alternatives --config python

Покажет вам ошибку:

update-alternatives: error: no alternatives for python3 

Вам нужно обновить свою версию update-alternatives, тогда вы сможете установить версию Python по умолчанию.

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

Затем запустите:

sudo update-alternatives --config python

Установите python3.6 по умолчанию.

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

sudo update-alternatives  --set python /usr/bin/python3.6

1
Этот ответ, вероятно, сломается apt. После выбора другой версии Python попробуйте запустить sudo apt update. Если он дает ошибку , как ModuleNotFoundError: No module named 'apt_pkg'вы хотите , чтобы пойти /usr/lib/python3/dist-packagesи создать символическую ссылку: ln -s apt_pkg.cpython-{34m,36m}-x86_64-linux-gnu.so.
Джакомо Альзетта

Это дает мне ошибку: $ sudo update-alternatives --set python /usr/bin/python3.6 update-alternatives: error: no alternatives for pythonкакие-либо предложения?
Слава Фомин II

1
@ GAD3R Спасибо. Мне удалось создать символическую ссылку вручную, чтобы указать на Python 3.6. Кроме того, у меня не установлен 3.7.
Слава Фомин II

9

Вы можете добиться этого, применяя следующие простые шаги -

  1. Проверьте версию Python на терминале - python --version
  2. Получите права пользователя root. По типу терминала -sudo su
  3. Запишите пароль пользователя root
  4. Выполните эту команду, чтобы перейти на Python 3.6 -
    update-alternatives --install /usr/bin/python python /usr/bin/python3 1
  5. Проверьте версию Python - python --version
  6. Готово.

1
Работает, прост для чтения и не использует псевдоним. +1
Карлос Пинсон

Отлично работает на Ubuntu 18.04. так просто, чем другие решения. Большое спасибо
Мухаммед Гейдари

7

Создайте символическую ссылку для / usr / bin / python3. В моем LinuxMint:

# ls -lh /usr/bin/python3 /usr/bin/python
lrwxrwxrwx 1 root root 9 ноя 24  2017 /usr/bin/python -> python2.7
lrwxrwxrwx 1 root root 9 сен  6  2017 /usr/bin/python3 -> python3.5

# mv /usr/bin/python
# cp /usr/bin/python3 /usr/bin/python
# python --version
Python 3.5.2

6

Использование этих команд может помочь вам:

  1. проверьте версию python: ls /usr/bin/python*
  2. псевдоним: alias python='/usr/bin/pythonxx'
  3. повторного входа в систему: . ~/.bashrc
  4. проверьте версию Python еще раз: python --version

спасибо, но после перезагрузки компьютера основным питоном будет все еще ex python 2.7
Мохаммед Хейдари

3

Простой ответ - добавить псевдоним для python3.6.

Просто добавьте эту строку в файл ~ / .bashrc:, alias python3="python3.6"затем закройте свой терминал и откройте новый. Теперь, когда вы печатаете, python3 xxxон переводится в python3.6 xxx.

Это решение решает вашу проблему без необходимости слишком сильно настраивать вашу систему.

РЕДАКТИРОВАТЬ :

Как отметил Микаэль Кьер , это неверная конфигурация ANSIBLE в вашей системе.

Как видно здесь:

Установите параметр ansible_python_interpreterконфигурации в / usr / bin / python3. Параметр конфигурации ansible_python_interpreter обычно устанавливается для каждого хоста в качестве переменной инвентаризации, связанной с хостом или группой хостов:

  # Example inventory that makes an alias for localhost that uses python3
  [py3-hosts]
  localhost-py3 ansible_host=localhost ansible_connection=local

  [py3-hosts:vars]
  ansible_python_interpreter=/usr/bin/python3

Как видно здесь о файле конфигурации:

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

* ANSIBLE_CONFIG (an environment variable)
* ansible.cfg (in the current directory)
* .ansible.cfg (in the home directory)
* /etc/ansible/ansible.cfg

На самом деле, я устанавливаю ansible, который поддерживает только> Python 3.5
codeclue

1
Вы можете установить ansible_python_interpreterпеременную для использования вашего python3.6. docs.ansible.com/ansible/latest/python_3_support.html
Микаэль Кьер

@ MikaelKjær Я только что добавил свой комментарий к моему ответу

1

если у вас есть несколько версий Python в вашей системе. Вам просто нужно обновить символическую ссылку Python внутри/usr/bin/

root@irshad:/usr/bin# ls -lrth python*
lrwxrwxrwx 1 root root    9 Apr 16  2018 python -> python2.7
-rwxr-xr-x 1 root root 3.6M Nov 12  2018 python2.7
-rwxr-xr-x 2 root root 4.4M May  7 14:58 python3.6

В приведенном выше примере, если вы видите вывод, python --versionвы получите python2.7

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

root@irshad:/usr/bin# unlink python
root@irshad:/usr/bin# ln -s /usr/bin/python3.6 python
root@irshad:/usr/bin# python --version
Python 3.6.8

0

update-alternatives - это изменение системных символических ссылок на пользовательские / определяемые администратором символические ссылки. Если в вашей системе установлено несколько версий python3, и вы хотите контролировать, какую версию python3 вызывать при вызове python3. Сделайте следующее

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.4 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 2

Запустите команду ниже, если вы хотите изменить приоритет в будущем.

update-alternatives --config python3

Объяснение: -

sudo update-alternatives --install <symlink_origin> <name_of_config> <symlink_destination> <priority>

Вы можете изменить name_of_config на python4, но затем вы должны вызвать альтернативы обновления --config с python4 для перенастройки.

Используя этот подход, вы можете управлять системной версией Python и версией Python3 по отдельности.


0

первая проверка у вас папка python3.6

ls /usr/bin/python3.6

если у вас есть папка, как python3.6 хорошо идти

тогда обновление-альтернативы

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

теперь обновите новый конфиг для python3

sudo update-alternatives --config python3

проверить версию Python

python3 --version


0

Вы можете изменить симболическую ссылку ln -sf python3.6 python3внутри /usr/bin. При этом при вызове python3будет выполнятьсяpython3.6

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.