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

231

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

    
задан Giri 17.07.2013 в 10:04
источник

8 ответов

267

Простым безопасным способом было бы использовать псевдоним. Поместите это в файл ~/.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
    
ответ дан Radu Rădeanu 17.07.2013 в 10:13
источник
68

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

Из Ubuntu wiki :

For both Ubuntu and Debian, we have ongoing project goals to make Python 3 the default, preferred Python version in the distros.

What this does not mean:

  • /usr/bin/python will point to Python 3. No, this is not going to happen (unless PEP 394 advocates otherwise, which is doubtful for the foreseeable future). /usr/bin/python and /usr/bin/python2 will point to Python 2.7 and /usr/bin/python3 will point to the latest supported Python 3 version.

  • Python 2 will be removed from the archive. No, this is not going to happen. We expect Python 2.7 to remain supported and available in Ubuntu for quite a long time, given that PEP 373 promises upstream bug fix maintenance support until 2020.

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

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

Примеры псевдонимов:

alias python=python3

или

alias python='/usr/bin/python3'

Сценарии должны использовать что-то вроде ~/.bash_profile для кросс-совместимости.

Использование #!/usr/bin/env python3 приятно для смешанного использования с виртуальными средами.

Примечание (спасибо @wjandrea): псевдонимы являются частью среды исполнения bash, а не среды пользователя. Поэтому они недоступны для shebang ( env ). Если вы предпочитаете псевдоним python = python3, то некоторые #! без shebang могут быть выполнены путем вызова интерпретатора с псевдонимом, такого как program.py . Алиасирование также может быть полезно для систем с несколькими версиями python3, таких как 3.4 и 3.6.

    
ответ дан Kevin 02.06.2014 в 18:31
8

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

    
ответ дан webwurst 04.05.2014 в 16:03
3

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.

    
ответ дан Moony 25.03.2016 в 16:43
1

Do

cd ~
gedit .bash_aliases

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

alias python=python3

или

alias python='/usr/bin/python3'

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

    
ответ дан Breeze 15.09.2017 в 20:36
0

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

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

просто выполните то же самое с python2.7 и python 3.3

    
ответ дан dcanelhas 18.10.2013 в 15:19
0
cat > /usr/local/bin/py
#!/usr/bin/dash
python3 "[email protected]"
<CTRL-D>

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

cat > /usr/local/bin/pyi
#!/usr/bin/dash
python3 -i "[email protected]"
<CTRL-D>

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

    
ответ дан John Allsup 15.01.2016 в 23:57
-1

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

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

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

    
ответ дан boris 03.05.2018 в 23:01