bash: / usr / lib / command-not-found: / usr / bin / python3: плохой интерпретатор: нет такого файла или каталога [duplicate]

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

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

14 ответов

Простым безопасным способом было бы использовать псевдоним. Поместите это в файл ~/.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

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

$ unalias python $ python --version Python 2.7.6
244
ответ дан 18 July 2018 в 10:52

Простым безопасным способом было бы использовать псевдоним. Поместите это в файл ~/.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

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

$ unalias python $ python --version Python 2.7.6
246
ответ дан 24 July 2018 в 19:40

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

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

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

0
ответ дан 18 July 2018 в 10:52

Сделайте

cd ~ gedit .bash_aliases

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

alias python=python3

, либо

alias python='/usr/bin/python3'

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

1
ответ дан 18 July 2018 в 10:52

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

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

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

0
ответ дан 18 July 2018 в 10:52
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
ответ дан 18 July 2018 в 10:52

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
ответ дан 18 July 2018 в 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.

6
ответ дан 18 July 2018 в 10:52

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

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

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

0
ответ дан 24 July 2018 в 19:40

Сделайте

cd ~ gedit .bash_aliases

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

alias python=python3

, либо

alias python='/usr/bin/python3'

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

1
ответ дан 24 July 2018 в 19:40

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

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

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

0
ответ дан 24 July 2018 в 19:40
  • 1
    Начинающие пользователи не смогут легко адаптировать связанный ответ к другой ситуации. В дополнение к кредитованию более раннего ответа было бы неплохо выложить шаги, необходимые для Python. – chaskes 18 October 2013 в 19:47
  • 2
    Теперь это устарело: они планировали удалить python2 в Xenial, но потом этого не произошло. – OrangeDog 20 June 2016 в 14:30
  • 3
    @OrangeDog, спасибо за обновление. Да, страница wiki-страницы, которую я цитировал, теперь отмечена как устаревшая, поскольку за последние два года был достигнут еще больший прогресс для перехода только на Python 3. Новая страница, чтобы следить за этой прогрессией, является официальной Ubuntu Страница Python . – Kevin 20 June 2016 в 16:27
  • 4
    "Последний" страница также устарела, в отношении планов Xenial. – OrangeDog 20 June 2016 в 16:42
  • 5
    Я бы не сказал, что это «устаревший». так как «он не обновлялся в последнее время». По-прежнему кажется, что это место для хранения сообщений об этом. Тем не менее, в комментариях здесь, я был бы признателен за любые другие источники, которые любой может найти. Добавление большего количества источников в мой ответ, о том, почему не сделать изменение только python, действительно не имеет значения до завершения преобразования. Даже тогда это может просто стать проблемой. – Kevin 20 June 2016 в 16:51
  • 6
    Вот я нашел хорошее пошаговое решение linuxconfig.org/… – woto 12 March 2017 в 18:50
  • 7
    @OrangeDog очень возможно иметь систему Xenial без Python 2 - я запустил Ubuntu Xenial Mate на малине PI, и у нее был рабочий стол, но нет python2.7. Есть еще некоторые дополнительные пакеты (или те, которые необходимы для работы на рабочем столе), программы, которые вытаскивают Python 2, так что у вас есть такие. – Antti Haapala 16 April 2017 в 10:52
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 July 2018 в 19:40

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 July 2018 в 19:40

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

6
ответ дан 24 July 2018 в 19:40
  • 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

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

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