Fatal Python error: Py_Initialize: Unable to get the locale encoding问题记录

问题:

Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'

Current thread 0x00007fbb4e5f2740 (most recent call first):
已放弃 (核心已转储)

已经2天半了,决定先把这个问题放下,以后时间充裕再解决,在此先把问题发生和我试图解决的过程记录下来:

1. 3天之前,我卸载了python3,又重新安装了(当时刚安装完spark相关的东西,我以为这没什么影响)

2. 然后出现了fatal python error,如上述红字.我已经多次看到了Fatal Python error:这个提示,包括开机的时候(因为配置文件无法被正确读取),还有在终端中普通用户下打开python3,但是我都没有重视!

3. 直到我无法使用pycharm进行编程,在终端中普通用户下也无法进入python3.开机时无法正常进入图形桌面,而是直接进入命令行(我通过sudo apt-get install ubuntu-desktop安装,然后又重新配置中文输入法等等东西,以前安装过的许多软件也丢失了).无法正常打开终端(我先用Xterm).

pycharm 的python console中也现实同样的问题.

4.网上有人说是PYTHONPATH配置错误,我开始了漫长的搜索和配置之路

比如:Linux 系统中 Fatal Python error: Py_Initialize: Unable to get the locale encoding

我尝试配置了/home/zhangshuang/.profile   /home/zhangshuang/.bash_profile   /home/zhangshuang/.bashrc  

/etc/profile   /etc/environment

error 提示PYTHONPATH没有独立和依赖库.

不确定python的安装目录和库目录,结合网上的信息和自己通过locate定位python2.7  python3.6  encodings  我把所能找到的所有目录都添加到PYTHONPATH中,甚至包括在pycharm中建立的虚拟环境中的库:

/home/zhangshuang/.profile截图,添加PYTHONHOME &PYTHONPATH

依然无法在terminal普通用户下使用python3(奇怪的是在Xterm中可以!),在root用户下python2/python3全都可以.

5.我尝试卸载python2/python3.结果root用户下总是能打开!

6.网上有人说是python3,参考了python2的库,这说到底还是路径设置的问题吧!

我现在先去掉一切的PYTHONPATH设置,先不用Pycharm 了,不过python是很多软件的基础,不知会不会出现其他问题!

------------------------------------------------------------------------------------------------------------------------------------------------

更新于2018年8月30日 

问题解决!

其中一段时间,我怀疑是不是因为某些目录或文件带锁(普通用户无法读写或运行)导致的错误,我还打算将这些无权限文件授权,但是这种冒然更改系统文件权限的方案被我否定了(以前吃过亏~),况且要改变权限的文件也太多.而且问题出现之前,我根本就没有改动文件权限.

到现在为止,我基本可以确信,是python3错误引用python2的导致的问题.因为我几乎已经把所有python(包括2和3)的应用程序目录和包所在目录都加入到PYTHONPATH中了(实际这只会越来越乱),依然显示找不到某个包,或是某个文件语法错误.

我把python2/python3全部卸载后,发现在root用户下也无法使用python2,但可以使用Python3,

在普通用户下无法找到python2/python3命令

我怀疑是不是python3无法卸载,因为它就是系统所依赖的包.

这时我将所有python3 的安装目录和基础包和第三方安装包所在目录都添加到PYTHONPATH中(在普通用户主目录下~/.profile文件中 export PYTHONPATH=…)

多谢这几篇文章,让我找到了所有有关的目录的线索:

Could not find platform independent libraries <prefix>

python及库在linux下的目录

以下是我的~/.profile设置:

重启系统,竟然可以了!

终端无法正常打开问题也解决了.

虽然就是几行代码就能解决的问题.

虽然因为自己的一个无心的操作就耗费了3天时间让我有些懊恼.

但是这次问题的解决过程很有价值:

1.多多查询最最开始发生了什么错误,这是导致后续一系列错误的根源,要多分析根源错误.比如这个问题就是:Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'

Current thread 0x00007fbb4e5f2740 (most recent call first):
已放弃 (核心已转储)

而不是其他语法错误什么的.

通过大范围的搜索问题,基本上可以确定问题出现的几种可能原因.

对于这个问题就是python路径设置错误或者是不同版本之间相互干扰.

2.尝试用不同思路解决问题,不要在同一条路上走太久,如果是尝试的话.

3.关注重点,比方说,这个问题如果解决不了,应该有预备方案(那就只能用记事本和ipython或者干脆放弃ubuntu).不能无休止纠缠一个问题.

4.总结问题,总结方法,总结知识.

4.1警告:

  • 不要卸载系统自带的东西,很有可能有依赖关系

  • 不要轻易更改/etc/profile /etc/environment 这种影响整个系统的配置文件

  • 如果必须更改,则必须做好备忘

4.2 知识点小结

Ubuntu桌面系统安装方法:sudo apt-get install ubuntu-desktop

代替终端方法:Xterm

输入法安装:fcitx输入法系统: sudo apt-get install fcitx-sunpinyin

pycharm虚拟环境:每个工程都有一个虚拟环境,在创建工程时新建,与系统中的python相关联.

命令行文本编辑器vim使用

...

————————————————————————————————————————

更新于20181106

这个问题最终还是没有彻底解决,表现在导入python包报错上。

重装系统是最坏的打算,因为系统中已经安装了不少东西,正因为此,我为了修复这个错误断断续续用了2个星期时间(也没弄好!)。

只好重新用会windows,但是体验过Ubuntu的反应速度以后,这真是非常痛苦。再说,做数据分析,以后免不了用开源软件。

下定决心重装,结果呢?重装各种东西花了不到一天半就弄好了!

猜你喜欢

转载自blog.csdn.net/zs15321583801/article/details/82151464