Фатальная ошибка Python: Py_Initialize: Невозможно получить … SyntaxError кодирования локали: Прерванный недопустимый синтаксис (выведенное ядро)

Я установил анаконду путем выполнения

bash Anaconda-2.2.0-Linux-x86_64.sh

команда в моей системе Ubuntu 14.04, которая установила успешно, после которого меня попросили экспортировать мое новое /home/username/anaconda/bin Переменная среды $PATH.

При выполнении так, я смог использовать все функции анаконды включая IDE, а также использовать базирующиеся команды всего conda успешно.

В следующий раз, когда я загрузил свою систему, каждая введенная мисс команда видела a

Fatal Python error: Py_Initialize: Unable to get the locale encoding
  File "/usr/local/lib/python2.7/encodings/__init__.py", line 123
    raise CodecRegistryError,\
                            ^
SyntaxError: invalid syntax
Aborted (core dumped)

ошибка. (Все команды кроме python быть конкретным)

На следующем несколько stackexchange и сообщения askubuntu и также замечающий, что мой $PYTHONPATH был установлен на usr/local/lib/python2.7, Я пытался

export PYTHONPATH=$PYTHONPATH:/home/username/anaconda/lib/python2.7

но это не помогло.

Это сделало, чтобы я прошел всю сагу об удалениях пакета, и переустанавливает, и конечно, много обновлений и обновлений, чтобы попытаться решить проблему один.

conda info -a возвраты:

CIO_TEST: <not set>
CONDA_DEFAULT_ENV: <not set>
CONDA_ENVS_PATH: <not set>
LD_LIBRARY_PATH: <not set>
PATH: /home/username/anaconda/bin:/home/username/Scala-sbt/sbt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/username/bin:/usr/local/java/jdk1.8.0_20/bin
PYTHONHOME: <not set>
PYTHONPATH: /usr/local/lib/python2.7:/home/username/anaconda/bin/python

Команда

which python

возвраты

/home/username/anaconda/bin/python

и

echo "$PATH"

возвраты

/home/username/anaconda/bin:/home/username/Scala-sbt/sbt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/username/bin:/usr/local/java/jdk1.8.0_20/bin

Я знаю, что это - что-то, чтобы сделать со способом, которым я установил переменные пути, конкретно в ~/.bashrc в котором Анаконда автоматически предварительно ожидала мою/home/username/anaconda/bin папку к $PATH переменная (Это произошло во время второй установки Анаконды после того, как я удалил ее сначала).

Я не изменил никакую другую переменную среды в также ~/.profile или ~/.bashrc.


Я добавил строку $PYTHONPATH экспорта к моему ~/.bashrc перед перезапуском.

Все функции Анаконды работают теперь, хотя то же Fatal Python error: Py_Initialize: Unable to get the locale encoding ошибка продолжает показ вместо обычной неизвестной ошибки команды для наиболее введенных с опечаткой команд.

Я буду продолжать изучать это и редактировать свой ответ (или обращаться к существующим ответам, если таковые имеются), как только я узнаю, почему это происходит.

14
задан 6 August 2015 в 02:53

6 ответов

Я рекомендовал бы сбросить PYTHONPATH. Это вообще не нужно, и это вызывает вещи повредиться как это, заставляя один Python загрузить вещи из другого Python (в этом случае, похоже, что Python 3 системы пытается загрузить что-то, что было записано для Python 2).

10
ответ дан 23 November 2019 в 03:05

У меня были подобные проблемы в прошедшие дни пары, таким образом, я проследил его до того, как удар обрабатывает "команду, не найденную". В 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 November 2019 в 03:05

Установив python3 в стандартных местоположениях и понимании мне был нужен sudo для использования его, я установил локально использование этого в моем корневом каталоге:

python3 -m venv env_py3
source env_py3/bin/activate

, Но имел больше ошибок. Просто сбрасывая PYTHONPATH на Amazon AWS экземпляр Linux работал отлично только для меня.

1
ответ дан 23 November 2019 в 03:05

Моя проблема несколько отличалась: Как один пользователь, я мог работать python, но как другой пользователь, не (я получил ту же ошибку как OP). Наконец, я узнал, что полномочия и владение /usr/lib/python3.5 были завинчены. Причина этого состояла в том, что я рекурсивно установил полномочия и владение на virtualenv, который закончился в изменении целей символьной ссылки (предназначающийся /usr/lib/python3.5) также.

Подсказка: Используйте strace python для выяснения то, что продолжается во время запуска Python. Когда я использовал strace, я мог ясно видеть PERMISSION_DENIED на /usr/lib/python3.5.

0
ответ дан 23 November 2019 в 03:05

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

-3
ответ дан 23 November 2019 в 03:05

Это работало на меня

https://stackoverflow.com/a/39097003/823282

rm -rf venv
virtualenv -p /usr/bin/python3 venv/
source venv/bin/activate
pip install -r requirements.txt
0
ответ дан 23 November 2019 в 03:05

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

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