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


python команда программы выполняет Python 2. Python 3 может быть выполнен с использованием python3 команда. Как выполнить Python 3 с помощью python команда?


224
2017-07-17 08:04


происхождения


Просто предупреждение: не пытайтесь изменить символическую ссылку / usr / bin / python, чтобы указать на python3 вместо 2.7. Многие программы, доступные в репозиториях Ubuntu, требуют, чтобы / usr / bin / python был совместим с python 2.x. - soulsource
@soulsource, да, я знаю об этом. вот почему я спросил, есть ли опция «обновления» или нет. - Giri
Ах, теперь я понял, что вы имели в виду с обновлением ... На самом деле разработчики Ubuntu работают над этим: wiki.ubuntu.com/Python/3 «Цель Ubuntu 14.04 LTS - выпуск, чтобы иметь только Python 3 на изображениях на рабочем столе CD». - soulsource
С другой стороны, любой, кто приходит сюда, потому что пытается узнать о том, как сделать Python 3 своим по умолчанию, может вместо этого найти применение при исследовании виртуальных сред (например, virtualenv) или контейнеров (например, LXC или Docker). - Kevin
В связи с предупреждением soulsource наверху PEP 394 который стандартизирует соглашения об именах для сосуществующих исполняемых файлов Python и на которых (и должен) полагаться программисты Python и поддерживающие пакет. - David Foerster


ответы:


Простым безопасным способом было бы использовать псевдоним. Поместите это в ~/.bashrc или ~/.bash_aliases файл:

alias python=python3

После добавления вышеуказанного в файл выполните следующую команду:

source ~/.bash_aliases or source ~/.bashrc

Например:

$ python --version
Python 2.7.6
$ python3 --version
Python 3.4.3
$ alias python=python3
$ python --version
Python 3.4.3

Чтобы обойти псевдоним, используйте command встроенная команда:

$ command python --version
Python 2.7.6

Другой способ обойти псевдоним - использовать \ перед командой.

$ \python --version 
Python 2.7.6

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

$ unalias python
$ python --version
Python 2.7.6

258
2017-07-17 08:13



поэтому нет опции «обновления». ?? - Giri
@Giri Ты сказал, что у тебя есть python3, Что для обновления? - Radu Rădeanu
на самом деле я хочу уничтожить 2,7 и заменить его на 3.3. Кажется, это плохая идея. - Giri
+1 нет возможности чистить 2.7, чтобы иметь возможность работать с 3.3. Поскольку много программного обеспечения все еще зависит от 2,7; просто держите его затянутым. - don.joey
@begueradj псевдоним полностью отличается от символическая ссылка, - Radu Rădeanu


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


Из Ubuntu wiki:

Для 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, все загружаются вместе и просто предназначены для организационных целей). питон виртуальные среды также хорошо работаем.

Такие как:

alias python=python3

или

alias python='/usr/bin/python3'

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

#!/usr/bin/env python

вместо

#!/usr/bin/python3

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

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


68
2018-06-02 16:31



Теперь это устарело: они планировали удалить python2 в Xenial, но потом этого не произошло. - OrangeDog
@OrangeDog, спасибо за обновление. Да, ссылка на wiki-страницу, которую я привел, теперь отмечена как устаревшая, поскольку за последние два года был достигнут еще больший прогресс для перехода только на Python 3. Новая страница, чтобы следить за этой прогрессией, является официальной Страница Ubuntu Python, - Kevin
«Последняя» страница также устарела, в отношении планов Xenial. - OrangeDog
Я бы не сказал, что это «устаревший», так как «он не обновлялся недавно». По-прежнему кажется, что это место для хранения сообщений об этом. Тем не менее, в комментариях здесь, я был бы признателен за любые другие источники, которые любой может найти. Добавление большего количества источников в мой ответ, о том, почему бы не сделать изменение просто python, на самом деле не имеет значения до завершения преобразования. Даже тогда это может просто стать проблемой. - Kevin
@OrangeDog очень возможно иметь систему Xenial без Python 2 - я запустил Ubuntu Xenial Mate на малине PI, и у нее был рабочий стол, но нет python2.7, Есть еще некоторые дополнительные пакеты (или те, которые необходимы для работы на рабочем столе), программы, которые вытаскивают Python 2, так что у вас есть такие. - Antti Haapala


Обновление: Это неправильный способ, я узнал, поскольку 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.


8
2018-05-04 14:03



python2 и python3 не являются альтернативами. Не используйте альтернативы обновлений для этой цели. - jobin
Почему они не такие? Может кто-нибудь из вас объяснить, почему update-alternatives не подходит для python? Это из-за legacy.python.org/dev/peps/pep-0394 ? - Dmitry Grigoryev
альтернативы - разные реализации для одних и тех же функций. python2 и python3 не предоставляют одинаковых функций. - Ely
Вы можете сделать что-то подобное, если вы вручную установили (через ppa или что-то еще) другие версии python3. sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2 - David Baucum


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.


3
2018-03-25 15:43





Делать

cd ~
gedit .bash_aliases

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

alias python=python3

или

alias python='/usr/bin/python3'

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


1
2017-09-15 18:36





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

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

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


0
2017-10-18 13:19



Начинающие пользователи не смогут легко адаптировать связанный ответ к другой ситуации. В дополнение к кредитованию более раннего ответа было бы неплохо выложить шаги, необходимые для Python. - chaskes
Вот я нашел хорошее пошаговое решение linuxconfig.org/... - woto


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
2018-01-15 22:57





Вы можете символически ссылаться /usr/bin/python в python3 с

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

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


0
2018-05-03 21:01