致命的 Python 错误:Py_Initialize:无法获取语言环境编码... SyntaxError:无效语法中止(核心转储)

sam*_*ach 21 python python-2.7 14.04 conda

我通过运行安装了anaconda

bash Anaconda-2.2.0-Linux-x86_64.sh
Run Code Online (Sandbox Code Playgroud)

命令在我的 Ubuntu 14.04 系统上安装成功,之后我被要求导出我的新/home/username/anaconda/bin$PATH 环境变量。

这样做后,我能够使用 anaconda 的所有功能,包括 IDE 的功能,并成功使用所有基于 conda 的命令。

下次我启动系统时,每个未输入的命令都会看到一个

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)
Run Code Online (Sandbox Code Playgroud)

错误。(除python特定命令外的所有命令)

在关注了一些 stackexchange 和 askubuntu 帖子并注意到我$PYTHONPATH已被设置为 后usr/local/lib/python2.7,我尝试

export PYTHONPATH=$PYTHONPATH:/home/username/anaconda/lib/python2.7
Run Code Online (Sandbox Code Playgroud)

但它没有帮助。

这让我经历了整个软件包删除和重新安装的传奇,当然还有很多更新和升级,以尝试自己解决问题。

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
Run Code Online (Sandbox Code Playgroud)

命令

which python
Run Code Online (Sandbox Code Playgroud)

返回

/home/username/anaconda/bin/python
Run Code Online (Sandbox Code Playgroud)

echo "$PATH"
Run Code Online (Sandbox Code Playgroud)

返回

/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
Run Code Online (Sandbox Code Playgroud)

我知道这与我设置路径变量的方式有关,特别是~/.bashrc在其中 Anaconda 自动将我的 /home/username/anaconda/bin 文件夹添加到$PATH变量中(这发生在我第一次删除 Anaconda 后的第二次安装期间)。

我没有在~/.profile或 中修改任何其他环境变量~/.bashrc


~/.bashrc在重新启动之前,我将 export $PYTHONPATH 行添加到我的。

Anaconda 的所有功能现在都可以工作,尽管Fatal Python error: Py_Initialize: Unable to get the locale encoding对于大多数错误输入的命令,总是出现相同的错误而不是通常的未知命令错误。

一旦我发现为什么会发生这种情况,我将继续调查并编辑我的答案(或参考现有答案,如果有的话)。

asm*_*rer 13

我建议取消设置 PYTHONPATH。它通常是不需要的,它通过让一个 Python 从另一个 Python 加载东西而导致事情像这样中断(在这种情况下,系统的 Python 3 似乎正在尝试加载为 Python 2 编写的东西)。

  • 先生,对迟到的答复深表歉意。通过取消设置 PYTHONPATH,您的意思是每次启动时手动设置它吗?Anaconda 目前运行的是 Python 2.7.10 而我还没有安装 Python 3,那么为什么会出现这个错误呢?我问的原因是 Conda 的用户站点目录信息将 PYTHONPATH 变量指定为 `PYTHONPATH: /home/usrnme/anaconda/lib/python2.7:/usr/local/lib/python2.7`。如果我要从我的 ~/.bashrc 中删除 PYTHONPATH: /home/usrnme/anaconda.. 行,错误仍然存​​在,并且 Anaconda 的所有功能都不起作用,直到我再次设置它。 (3认同)