Мои команды терминала Ubuntu, похоже, работают на python

До сих пор ответ Ури Эрреры (оставленный в комментарии к моему вопросу) работает на меня.

Примечание к модам: я ранее разместил этот ответ, но он был удален как не ответ, и нет способа обсудить это удаление. Я переписываю его, потому что это лучший ответ. Мод сказал, что это действительно комментарий, а не ответ, но он ошибается. Ури отправил свой ответ в комментарии; таким образом, я не могу это принять. Итак, я отправил ссылку в качестве ответа и ждал истечения тайм-аута, чтобы я мог его принять. (Почему я должен ждать 24 часа, прежде чем принимать свой собственный ответ?) Поскольку я не могу передать ответ Ури из комментария к ответу, нет другого пути, чем то, что я сделал.

2
задан 25 November 2017 в 00:30

3 ответа

/etc/bash.bashrc определяет функцию command_not_found_handle, которая вызывает /usr/lib/command-not-found, которая является скриптом Python 3. Этот обработчик вызывается для команд, которые Bash не может найти.

Итак, как исправление повязки, вы можете отключить обработчик:

unset -f command_not_found_handle

Обновить 2:

После некоторого обсуждения с OP выясняется, что проблема вызвана выполнением исполняемого файла Python 2.7, случайно помещенного в /usr/bin/python3.4. (Так что мое первое обновление было не очень полезно, но в редакции 4, если вы хотите его прочитать). Если это произойдет с вами, не перезагружайте компьютер! Некоторые части графического интерфейса зависят от Python 3. Вам, вероятно, потребуется также открыть терминал.

Кстати, это объясняет бесконечный цикл при вызове неизвестной команды в приглашении Bash. /usr/lib/command-not-found имеет этот раздел в нем:

if sys.version < '3':
    # We might end up being executed with Python 2 due to an old
    # /etc/bash.bashrc.
    import os
    if "COMMAND_NOT_FOUND_FORCE_PYTHON2" not in os.environ:
        os.execvp("python3", [sys.argv[0]] + sys.argv)

Это означает, что когда он запускается Python 2, он вызывает python3, но поскольку python3 на самом деле является Python 2, процесс повторяется. [ ! d7]

Обновление 3:

OP закончил переустановку Ubuntu, но мне было любопытно, поэтому я открыл виртуальную машину, вызвал аналогичную проблему (если не та же проблема) и исправил ее.

Вызвал проблему
sudo cp /usr/bin/python2.7 /usr/bin/python3.4
Подтвердил проблему Ran python3 --version, got Python 2.7.6 Пробовал sdf, пришлось нажать Ctrl + C, чтобы остановить цикл Исправлено:
sudo apt-get install --reinstall python3.4-minimal
Пакет python3.4-minimal предоставляет сам исполняемый файл Python 3.4. Все остальные пакеты, которые я проверил (python3, python3.4, python3-minimal), зависят от python3.4-minimal по этой причине.

(OP и я наткнулись на это решение в первый раз. Для получения дополнительной информации о том, что я пробовал, что еще я испортил, и как я его исправил, прочитайте версию 4 .)

4
ответ дан 22 May 2018 в 15:57
  • 1
    Я так думаю. Я всегда использую разные пакеты python с песочницей virtualenv, но недавно я, возможно, случайно установил некоторую версию python по всему миру. Выходы следующие: введите python 3: python3 hashed (/ usr / bin / python3); python3 --version: Python 2.7.6. Похоже, что python3 на самом деле является ссылкой на python 2. Должен ли я использовать команду переустановки? – Ishtiaque Khan 24 November 2017 в 01:53
  • 2
    @IshtiaqueKhan OK, похоже, что вы случайно установили python2.7 в /usr/bin/python3.4. Возможно, вы захотите запустить python --version, чтобы проверить, что это не затронуто. – wjandrea 24 November 2017 в 02:46
  • 3
    readlink /usr/bin/python3.4 ничего не печатает. Я собрал все это в вопрос. – Ishtiaque Khan 24 November 2017 в 11:54
  • 4
    @IshtiaqueKhan Я забыл упомянуть, не перезагружайте компьютер! Некоторые части графического интерфейса зависят от Python 3. Возможно, вы захотите также закрыть терминал. – wjandrea 24 November 2017 в 18:50
  • 5
    @IshtiaqueKhan Вы можете попробовать переустановить python3-minimal, но я ожидаю, что это тоже вызовет ошибку. – wjandrea 24 November 2017 в 18:58

/etc/bash.bashrc определяет функцию command_not_found_handle, который называет /usr/lib/command-not-found, который является в Python 3 сценария. Этот обработчик вызывается для команды, Баш не могу найти.

так как исправить бандаж, можно сбросить обработчик:

unset -f command_not_found_handle

обновление 2:

после некоторого обсуждения с ОП, оказывается проблема вызвана Питон 2.7 исполняемый случайно помещены в /usr/Бен/питон3.4. (Так что мое первое обновление было не очень полезно, но это в версии 4, Если вы хотите, чтобы прочитать его). Если это случится с вами, не перезагружайте компьютер! Некоторые части графического интерфейса зависит от языка Python 3. Вы, вероятно, нужно держать терминал открытым.

кстати, это и объясняет бесконечный цикл при вызове неизвестной команды в командной строке. /usr/lib/command-not-found этот раздел в нем:

if sys.version < '3': # We might end up being executed with Python 2 due to an old # /etc/bash.bashrc. import os if "COMMAND_NOT_FOUND_FORCE_PYTHON2" not in os.environ: os.execvp("python3", [sys.argv[0]] + sys.argv)

, что означает, когда он запускается на выполнение с помощью Python 2, это звонки на [F9], но с python3 на самом деле в Python 2, процесс повторяется.

обновление 3:

ОП закончилось переустановкой Ubuntu, но мне было любопытно и я открыл ВМ, вызвало подобный вопрос (если не тот же вопрос), и починил его.

вызвало проблему sudo cp /usr/bin/python2.7 /usr/bin/python3.4 подтвержден проблема побежал на [F11], получил Python 2.7.6 работает [от f13], пришлось нажать Ctrl+C, чтобы остановить цикл, исправил: sudo apt-get install --reinstall python3.4-minimal пакет python3.4-minimal предоставляет Python 3.4 в сам исполняемый. Все остальные пакеты я проверил (python3, python3.4, [f17 в]) зависят от python3.4-minimal по этой причине.

(ОП и я споткнулся через это решение в первый раз вокруг. Для получения более подробной информации о том, что я пытался, что то я напутал, и как я ее исправил, читать редакция 4.)

4
ответ дан 18 July 2018 в 02:44

/etc/bash.bashrc определяет функцию command_not_found_handle, которая вызывает /usr/lib/command-not-found, которая является скриптом Python 3. Этот обработчик вызывается для команд, которые Bash не может найти.

Итак, как исправление повязки, вы можете отключить обработчик:

unset -f command_not_found_handle

Обновить 2:

После некоторого обсуждения с OP выясняется, что проблема вызвана выполнением исполняемого файла Python 2.7, случайно помещенного в /usr/bin/python3.4. (Так что мое первое обновление было не очень полезно, но в редакции 4, если вы хотите его прочитать). Если это произойдет с вами, не перезагружайте компьютер! Некоторые части графического интерфейса зависят от Python 3. Вам, вероятно, потребуется также открыть терминал.

Кстати, это объясняет бесконечный цикл при вызове неизвестной команды в приглашении Bash. /usr/lib/command-not-found имеет этот раздел в нем:

if sys.version < '3': # We might end up being executed with Python 2 due to an old # /etc/bash.bashrc. import os if "COMMAND_NOT_FOUND_FORCE_PYTHON2" not in os.environ: os.execvp("python3", [sys.argv[0]] + sys.argv)

Это означает, что когда он запускается Python 2, он вызывает python3, но поскольку python3 на самом деле является Python 2, процесс повторяется. [ ! d7]

Обновление 3:

OP закончил переустановку Ubuntu, но мне было любопытно, поэтому я открыл виртуальную машину, вызвал аналогичную проблему (если не та же проблема) и исправил ее.

Вызвал проблему sudo cp /usr/bin/python2.7 /usr/bin/python3.4 Подтвердил проблему Ran python3 --version, got Python 2.7.6 Пробовал sdf, пришлось нажать Ctrl + C, чтобы остановить цикл Исправлено: sudo apt-get install --reinstall python3.4-minimal Пакет python3.4-minimal предоставляет сам исполняемый файл Python 3.4. Все остальные пакеты, которые я проверил (python3, python3.4, python3-minimal), зависят от python3.4-minimal по этой причине.

(OP и я наткнулись на это решение в первый раз. Для получения дополнительной информации о том, что я пробовал, что еще я испортил, и как я его исправил, прочитайте версию 4 .)

4
ответ дан 24 July 2018 в 17:38

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

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