Как заставить программную команду 'python' выполнить Python 3?

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

536
задан 23 March 2017 в 18:31

9 ответов

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

alias python=python3

После добавления вышеуказанного в файл запустите source ~ / .bashrc или источник ~ / .bash_aliases .

Например:

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

Для обхода псевдонима используйте команду . встроенная команда:

$ command python --version
Python 2.7.6

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

$ \python --version 
Python 2.7.6

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

$ unalias python
$ python --version
Python 2.7.6
506
ответ дан 23 March 2017 в 18:31

Сделайте

cd ~
gedit .bash_aliases

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

alias python=python3

или

alias python='/usr/bin/python3'

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

4
ответ дан 23 March 2017 в 18:31

На Ubuntu 20.04+ вы можете сделать

sudo apt install python-is-python3

Кроме того, вы можете предотвратить установку Python 2 как зависимости от чего-то в будущем с помощью apt-mark hold :

sudo apt-mark hold python2 python2-minimal python2.7 python2.7-minimal libpython2-stdlib libpython2.7-minimal libpython2.7-stdlib 
70
ответ дан 23 March 2017 в 18:31

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

42
ответ дан 23 March 2017 в 18:31

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


Из вики Ubuntu :

Как для 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 python3 для перекрестной совместимости.

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

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

94
ответ дан 23 March 2017 в 18:31

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.

10
ответ дан 23 March 2017 в 18:31
cat > /usr/local/bin/py << 'EOF'
#!/bin/dash
python3 "$@"
EOF

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

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

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

-1
ответ дан 23 March 2017 в 18:31

Я считаю очень полезным просто удалить / usr / bin / python и / usr / bin / pip. Это заставляет все программы полагаться на команды «python2» и «python3».

Хотя работа некоторых необязательных и устаревших пакетов зависит от #! / Usr / bin / python , я предпочитаю отправлять исправления для этих программ, чем продолжать делать странные, а иногда и трудно поддающиеся отладке ошибки.

3
ответ дан 23 March 2017 в 18:31

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

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

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

0
ответ дан 23 March 2017 в 18:31

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

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