Змініть Python3 версію за замовчуванням в Ubuntu


72

Я використовую 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

3
Що ти sudo update-alternatives --config python3кажеш?
Mikael Kjær

1
update-alternative: error: альтернативи для python3
codeclue

Дивіться мій коментар у відповіді нижче про те, як використовувати ansible з певною версією python3. Ви також можете розглянути питання про видалення python 3.4.
Mikael Kjær

Відповіді:


96

З коментаря:

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

Виготовлення python3пункту python3.8з цим методом зламав gnome-terminalдля мене.
Борис

10

Ви можете досягти цього, застосувавши нижче прості дії -

  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

дякую, але після перезавантаження комп'ютера головним пітоном все ще залишився екс-пітон 2.7
Мохаммад Гейдарі

3

Легкою відповіддю було б додати псевдонім для python3.6.

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

Це рішення виправляє вашу проблему, не потребуючи сильного налаштування системи.

Редагувати:

Як зазначав Мікаель Кджер , це неправильна конфігурація анібелів у вашій системі.

Як видно тут:

Встановіть параметр 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
Mikael Kjær

@ 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 symlink, використовуючи нижче команду-

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

Оновлення-альтернативи полягає у зміні системних посилань на визначені користувачем / визначені адміністратором символьні посилання. Якщо у вашій системі встановлено кілька версій 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

перевірити версію пітона

python3 --version


0

Ви можете змінити символічне посилання ln -sf python3.6 python3всередині /usr/bin. При цьому, коли ви телефонуєте, python3це виконаєpython3.6

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.