Как сделать команду «python» выполнить команду Python 3?

В случае, если кто-то другой сталкивается с этим вопросом - кажется, что сторонние разработчики Chrome удалили конфликт в 3 опубликованных пакетах - google-chrome-stable / -beta / -unstable. Каждый из них устанавливается в разные каталоги и через / etc / alternatives, / usr / bin / google-chrome привязан к определенной версии (по умолчанию поддерживается google-хром).

Проверено на Ubuntu 12.04 LTS w / Chrome 38 (стабильный) 39 (бета) и 40 (неустойчивый).

1
задан 23 March 2017 в 19:31

7 ответов

[Июнь 2016] Рекомендуемое место для информации о переходе - официальная страница Ubuntu Python.

Из Ubuntu Python : [!d4 ] Для Ubuntu и Debian у нас есть текущие цели проекта, чтобы сделать Python 3 по умолчанию, предпочтительной версией Python в дистрибутивах. Что это не значит: /usr/bin/python укажет на Python 3. Нет, этого не произойдет (если только PEP 394 не выступает в противном случае, что сомнительно в обозримом будущем). /usr/bin/python и /usr/bin/python2 укажут на Python 2.7, а /usr/bin/python3 укажут на последнюю версию Python 3. Python 2 будет удален из архива. Нет, этого не произойдет. Мы ожидаем, что Python 2.7 останется поддерживаемым и доступным в Ubuntu в течение довольно долгого времени, учитывая, что PEP 373 обещает поддержку поддержки исправления восходящего потока до 2020 года.

Не рекомендуется менять символическую ссылку из-за другого пакета зависимостей, но у них «есть текущие цели проекта, чтобы сделать Python 3 по умолчанию, предпочтительной версией Python в дистрибутивах».

Для использования CLI, например @Radu Rădeanu, я бы порекомендовал добавление псевдонима в файл ~/.bashrc, .bash_aliases пользователя (разные файлы, включая ~/.bash_profile, загружаются вместе и предназначены только для организационных целей). Виртуальные среды Python также работают хорошо.

Например:

alias python=python3

или

alias python='/usr/bin/python3'

Сценарии могут начинаться с чего-то вроде:

#!/usr/bin/env python

вместо

#!/usr/bin/python3

Я бы порекомендовал использовать #!/usr/bin/python3 (или #!/usr/bin/env python3) в сценариях для более простой кросс-совместимости.

Использование env приятно для смешанного использования с виртуальными средами.

64
ответ дан 24 May 2018 в 19:56
  • 1
    Теперь это устарело: они планировали удалить python2 в Xenial, но потом этого не произошло. – OrangeDog 20 June 2016 в 14:30
  • 2
    @OrangeDog, спасибо за обновление. Да, страница wiki-страницы, которую я цитировал, теперь отмечена как устаревшая, поскольку за последние два года был достигнут еще больший прогресс для перехода только на Python 3. Новая страница, чтобы следить за этой прогрессией, является официальной Ubuntu Страница Python . – Kevin 20 June 2016 в 16:27
  • 3
    "Последний" страница также устарела, в отношении планов Xenial. – OrangeDog 20 June 2016 в 16:42
  • 4
    Я бы не сказал, что это «устаревший». так как «он не обновлялся в последнее время». По-прежнему кажется, что это место для хранения сообщений об этом. Тем не менее, в комментариях здесь, я был бы признателен за любые другие источники, которые любой может найти. Добавление большего количества источников в мой ответ, о том, почему не сделать изменение только python, действительно не имеет значения до завершения преобразования. Даже тогда это может просто стать проблемой. – Kevin 20 June 2016 в 16:51
  • 5
    @OrangeDog очень возможно иметь систему Xenial без Python 2 - я запустил Ubuntu Xenial Mate на малине PI, и у нее был рабочий стол, но нет python2.7. Есть еще некоторые дополнительные пакеты (или те, которые необходимы для работы на рабочем столе), программы, которые вытаскивают Python 2, так что у вас есть такие. – Antti Haapala 16 April 2017 в 10:52

Обновление: это не так, как я узнал, поскольку Python2 и Python3 не являются взаимозаменяемыми.

Вы можете попробовать инструмент командной строки update-alternatives.

$ sudo update-alternatives --config python

] Если вы получите ошибку «нет альтернатив для python», тогда настройте альтернативу со следующей командой:

$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10

Соответственно измените путь /usr/bin/python3 на нужную версию python.

7
ответ дан 24 May 2018 в 19:56
  • 1
    python2 и python3 не являются альтернативами. Не используйте альтернативы обновлений для этой цели. – jobin 2 June 2014 в 23:37
  • 2
    Почему они не такие? Может ли один из вас объяснить, почему update-alternatives не подходит для python? Это из-за legacy.python.org/dev/peps/pep-0394 ? – Dmitry Grigoryev 19 February 2016 в 18:28
  • 3
    альтернативы - разные реализации для одних и тех же функций. python2 и python3 не предоставляют одинаковых функций. – Ely 13 December 2016 в 23:01

Ubuntu и остальные дистрибутивы Linux по-прежнему в значительной степени зависят от Python 2.7 для ряда приложений и команд. Если вы измените ссылку по умолчанию на «python» на Python 3.x, тогда некоторые функции Python начнут бросать ошибки утверждения.

Например, на Ubuntu «pip» для одного больше не будет запускаться правильно, если вы непосредственно не отредактировали файл и не изменили shebang на ссылку '#! / usr / bin / env python2.7'. На RHEL (Red Hat Enterprise Linux), таких как Red Hat, Fedora и CentOS, команда «Yum» также зависит от Python 2.7.

Моя точка зрения заключается в том, что вы вызываете значительный объем кода чтобы начать бросать ошибки утверждения только для того, чтобы вы могли набирать «python» в терминале, чтобы ссылаться на Python 3.x.

Вам намного лучше использовать команду «python3» в терминале и shebang ' #! / usr / bin / env python3 'в ваших файлах Python 3.x.

2
ответ дан 24 May 2018 в 19:56

Сделайте

cd ~
gedit .bash_aliases

, затем напишите либо

alias python=python3

, либо

alias python='/usr/bin/python3'

Сохраните файл, закройте терминал и снова откройте его. Ссылка

1
ответ дан 24 May 2018 в 19:56

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

Этот ответ Является хорошим примером того, как устанавливать вещи для одновременного поддержания разных например, версии gcc / g ++.

просто делают то же самое с python2.7 и python 3.3

0
ответ дан 24 May 2018 в 19:56
  • 1
    Начинающие пользователи не смогут легко адаптировать связанный ответ к другой ситуации. В дополнение к кредитованию более раннего ответа было бы неплохо выложить шаги, необходимые для Python. – chaskes 18 October 2013 в 19:47
  • 2
    Вот я нашел хорошее пошаговое решение linuxconfig.org/… – woto 12 March 2017 в 18:50
cat > /usr/local/bin/py
#!/usr/bin/dash
python3 "$@"
<CTRL-D>

(если у вас есть разрешение на запись в / usr / local / bin) аналогично

cat > /usr/local/bin/pyi
#!/usr/bin/dash
python3 -i "$@"
<CTRL-D>

, тогда вы только набираете py (и используете py в #! lines) для выбранного вами python.

0
ответ дан 24 May 2018 в 19:56

Вы можете привязать /usr/bin/python к python3 с помощью

sudo ln -s /usr/bin/python3 /usr/bin/python

См. другие ответы, почему вы не хотите этого делать. Ubuntu 18.04 больше не поставляется с Python 2, поэтому не должно быть слишком плохо.

0
ответ дан 24 May 2018 в 19:56

Другие вопросы по тегам:

Похожие вопросы: