치명적인 Python 오류 : Py_Initialize : 로캘 인코딩을 가져올 수 없습니다… SyntaxError : 잘못된 구문이 중단되었습니다 (코어 덤프) invalid syntax Aborted

나는 아나콘다를 설치하여

bash Anaconda-2.2.0-Linux-x86_64.sh

Ubuntu 14.04 시스템에서 명령을 성공적으로 설치 한 후 새 /home/username/anaconda/bin$ PATH 환경 변수 를 내보내라는 메시지가 표시 됩니다.

그렇게하면서, 나는 IDE를 포함한 모든 아나콘다의 기능을 사용하고 모든 콘다 기반 명령을 성공적으로 사용할 수있었습니다.

다음에 시스템을 부팅 할 때, 모든 미스 타입 명령은

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

~/.bashrcAnaconda가 / home / username / anaconda / bin 폴더를 $PATH변수 앞에 자동으로 추가하는 경우 경로 변수를 설정하는 방식과 관련이 있음을 알고 있습니다. ).

~/.profile또는 에서 다른 환경 변수를 수정하지 않았습니다 ~/.bashrc.


~/.bashrc다시 시작하기 전에 내보내기 $ PYTHONPATH 행을 추가했습니다 .

Fatal Python error: Py_Initialize: Unable to get the locale encoding대부분의 잘못 입력 된 명령에 대해 일반적인 알 수없는 명령 오류 대신 동일한 오류가 계속 표시 되지만 Anaconda의 모든 기능이 현재 작동 합니다.

이 문제가 발생하는 이유를 알게 되 자마자이 문제를 계속 검토하고 답변을 편집하거나 기존 답변을 참조하십시오.



답변

PYTHONPATH를 설정 해제하는 것이 좋습니다. 일반적으로 필요하지 않으며 다른 Python에서 하나의 Python을로드하여이를 중단시킵니다 (이 경우 시스템의 Python 3이 Python 2 용으로 작성된 것을로드하려고하는 것처럼 보입니다).


답변

지난 며칠 동안 비슷한 문제가 발생했기 때문에 bash가 “명령을 찾을 수 없음”을 처리하는 방식으로 다시 추적했습니다. Ubuntu 14.04 (및 14.04 스크립트를 사용하는 Linux Mint 17)에서 /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″을 호출합니다. 이 문제를 해결하려면 / usr / lib / command-not-found의 22 행을

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

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

이것은 Anaconda가 아닌 Ubuntu의 버그 인 것 같습니다. 나중에 배포판에 나타나는지 확인하겠습니다.


답변

표준 위치에 python3을 설치하고 그것을 사용하기 위해 sudo가 필요하다는 것을 깨달은 후 내 홈 디렉토리에서 이것을 사용하여 로컬로 설치했습니다.

python3 -m venv env_py3
source env_py3/bin/activate

그러나 더 많은 오류가있었습니다. AWS의 Amazon Linux 인스턴스에서 PYTHONPATH를 설정 해제하면 나에게 큰 도움이되었습니다.


답변

내 문제는 조금 달랐습니다. 한 사용자는 실행할 수 python있지만 다른 사용자는 (OP와 동일한 오류가 발생했습니다) 실행할 수 있습니다 . 마지막으로 /usr/lib/python3.5 의 권한과 소유권이 망가 졌다는 것을 알았습니다 . 그 이유는 virtualenv에 대한 사용 권한과 소유권을 재귀 적으로 설정했기 때문에 symlink 대상을 수정하게되었습니다 (targetin /usr/lib/python3.5 )도 되었습니다.

팁 : strace python파이썬 시작 중에 무슨 일이 일어나고 있는지 알아내는 데 사용하십시오 . 를 사용할 때 /usr/lib/python3.5에서 PERMISSION_DENIEDstrace명확하게 볼 수있었습니다 .


답변

이것은 나를 위해 일했다

/programming//a/39097003/823282

rm -rf venv
virtualenv -p /usr/bin/python3 venv/
source venv/bin/activate
pip install -r requirements.txt

답변

Windows에서도 비슷한 문제가 발생했습니다. PYTHONHOME 시스템 변수를 삭제했습니다. 솔루션을 영어로 번역하려고합니다. 내 컴퓨터> 속성> 고급 시스템 설정> 환경 변수에서 PYTHONHOME 변수를 찾아 삭제하십시오.