Fatal Python error: Py_Initialize: невозможно получить кодировку locale & hellip; СинтаксисError: недопустимый синтаксис Aborted (core dumped)

Немного другой подход от других ответов: запустите свою команду, и если это не удастся, запустите оболочку. Таким образом, вам не нужно открывать терминал (который не различает успех команды или отказ), и вы можете обнаружить, что оболочка особенно полезна при сбое. Чтобы закрыть его, просто используйте Ctrl-D (EOF), «exit», Alt-F4 (или что-то, что ваш оконный менеджер использует для закрытия окон) и т. Д.

success-or-shell

#!/bin/sh
[ $# -eq 0 ] && {
  echo "$(basename $0): no command" >&2
  exit 1
}
"$@" || {
  echo "failed: $?"
  exec $SHELL
}

Поместите этот файл где-нибудь, например ~ / bin, а затем используйте команду «success-or-shell your original command» в вашей пусковой установке.

1
задан 6 August 2015 в 12:53

2 ответа

У меня были похожие проблемы за последние пару дней, поэтому я проследил его до того, как bash обрабатывает команду «не найден». В Ubuntu 14.04 (и Linux Mint 17, где я использую скрипты 14.04), /etc/bash.bashrc имеет следующую функцию:

if [ -x /usr/lib/command-not-found ]; then
    function command_not_found_handle {
        # check because c-n-f could've been removed in the meantime
        if [ -x /usr/lib/command-not-found ]; then
            /usr/bin/python /usr/lib/command-not-found -- $1
            return $?
        else
           return 127
        fi
    }
fi

Однако, / usr / lib / command-not-found был перезаписан для Python 3. Он обрабатывает команду /etc/bash.bashrc с помощью:

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)

Это вызывает «python3» из пути, а не дает прямой путь. Чтобы исправить это, строка 22 из / usr / lib / command-not-found должна быть изменена с

os.execvp("python3", [sys.argv[0]] + sys.argv)

на

os.execv("/usr/bin/python3", [sys.argv[0]] + sys.argv)

Это похоже на ошибку с Ubuntu а не Анаконда. Я проверю, появится ли оно в последующих дистрибутивах.

3
ответ дан 23 May 2018 в 19:33

У меня была аналогичная проблема с окнами - я удалил системную переменную PYTHONHOME. Я попытаюсь перевести решение на английский. Мой компьютер> Свойства> Дополнительные параметры системы> Переменные среды, найдите переменную PYTHONHOME и удалите ее.

-2
ответ дан 23 May 2018 в 19:33

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

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