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

  问题:


lx@lx-PC:~$ python
Could not find platform independent libraries
Could not find platform dependent libraries
Consider setting $PYTHONHOME to [:]
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'


类似问题:command not found:conda

暂时性的解决方法是:

export PATH="/home/[your_name]/anaconda/bin:$PATH"

但是下一次重启之后,还是会出现这个问题,所以我们要acivate ~/.bash_profile

. ~/.bash_profile
#或者
source ~/.bash_profile

这样应该就能搞定了。



第一步找Python安转目录

1、默认Python安装情况


一般情况,Linux会预装Python的,版本较低,比如Ubuntu15的系统一般预装的是Python2.7.10。

Linux 系统中 Fatal Python error: Py_Initialize: Unable to get the locale encoding_第1张图片

使用命令:which python可以查看当前的python的安装路径: 

打开对应路径就可以看到(python目录下有这些文件,即:有类似这些文件(python,python2,python2.7)的目录,才是自己系统中对应的python目录)

 Linux 系统中 Fatal Python error: Py_Initialize: Unable to get the locale encoding_第2张图片

如果没有明确必须要使用Python3的版本,可以直接使用2.7.10的版本。

明确需要使用Python3版本,再进行更改。

 

这里需要说明一点:上图中存在有python,python2,python3,说明安装了2和3的版本


第二步:

Linux将命令添加到PATH:
LinuxApacheBash

简单说PATH就是一组路径的字符串变量,当你输入的命令不带任何路径时,LINUX会在PATH记录的路径中查找该命令。有的话则执行,不存在则提示命令找不到。比如在根目录/下可以输入命令ls,在/usr目录下也可以输入ls,但其实ls命令根本不在这个两个目录下,当你输入ls命令时LINUX会去/bin,/usr/bin,/sbin等目录寻找该命令。而PATH就是定义/bin:/sbin:/usr/bin等这些路劲的变量,其中冒号为目录间的分割符。

如何自定义路径:
假设你新编译安装了一个apache在/usr/local/apache下,你希望每次启动的时候不用敲一大串字符(# /usr/local/apache/bin/apachectl start)才能使用它,而是直接像ls一样在任何地方都直接输入类似这样(# apachectl start)的简短命令。这时,你就需要修改环境变量PATH了,准确的说就是给PATH增加一个值/usr/local/apache/bin。将/usr/local/apache/bin添加到PATH中有三种方法:

1、直接在命令行中设置PATH
# PATH=$PATH:/usr/local/apache/bin
使用这种方法,只对当前会话有效,也就是说每当登出或注销系统以后,PATH设置就会失效。

2、在profile中设置PATH
# vi /etc/profile
找到export行,在下面新增加一行,内容为:export PATH=$PATH:/usr/local/apache/bin。
注:= 等号两边不能有任何空格。这种方法最好,除非手动强制修改PATH的值,否则将不会被改变。
编辑/etc/profile后PATH的修改不会立马生效,如果需要立即生效的话,可以执行# source profile命令。

3、在当前用户的profile中设置PATH
# vi ~/.bash_profile
修改PATH行,把/usr/local/apache/bin添加进去,如:PATH=$PATH:$HOME/bin:/usr/local/apache/bin。
# source ~/.bash_profile
让这次的修改生效。
注:这种方法只对当前用户起作用的,其他用户该修改无效。

 

去除自定义路径:
当你发现新增路径/usr/local/apache/bin没用或不需要时,你可以在以前修改的/etc/profile或~/.bash_profile文件中删除你曾今自定义的路径。


第三步:

在.profile文件中添加路径:

export PATH="$PATH:/home/lx/anaconda3/bin"


PASH环境变量的设置方法:

方法一:用户主目录下的.profile或.bashrc文件(推荐)

登录到你的用户(非root),在终端输入:
$ sudo gedit ~/.profile(or .bashrc)
可以在此文件末尾加入PATH的设置如下:
export PATH=”$PATH:your path1:your path2 ...”
保存文件,注销再登录,变量生效。
该方式添加的变量只对当前用户有效。

方法二:系统目录下的profile文件(谨慎)

在系统的etc目录下,有一个profile文件,编辑该文件:
$ sudo gedit /etc/profile
在最后加入PATH的设置如下:
export PATH=”$PATH:your path1:your path2 ...”
该文件编辑保存后,重启系统,变量生效。
该方式添加的变量对所有的用户都有效。

方法三:系统目录下的 environment 文件(谨慎)

在系统的etc目录下,有一个environment文件,编辑该文件:
$ sudo gedit /etc/environment
找到以下的 PATH 变量:
PATH="<......>"
修改该 PATH 变量,在其中加入自己的path即可,例如:
PATH="<......>:your path1:your path2 …"
各个path之间用冒号分割。该文件也是重启生效,影响所有用户。
注意这里不是添加export PATH=… 。

方法四:直接在终端下输入

$ sudo export PATH="$PATH:your path1:your path2 …"
这种方式变量立即生效,但用户注销或系统重启后设置变成无效,适合临时变量的设置。


注 意:方法二和三的修改需要谨慎,尤其是通过root用户修改,如果修改错误,将可能导致一些严重的系统错误。因此笔者推荐使用第一种方法。另外嵌入式 Linux的开发最好不要在root下进行(除非你对Linux已经非常熟悉了!!),以免因为操作不当导致系统严重错误。

下面是一个对environment文件错误修改导致的问题以及解决方法示例:

问题:因为不小心在 etc/environment里设在环境变量导致无法登录
提示:不要在 etc/environment里设置 export PATH这样会导致重启后登录不了系统
解决方法:
在登录界面 alt +ctrl+f1进入命令模式,如果不是root用户需要键入(root用户就不许这么罗嗦,gedit编辑会不可显示)
/usr/bin/sudo /usr/bin/vi /etc/environment
光标移到export PATH** 行,连续按 d两次删除该行;
输入:wq保存退出;
然后键入/sbin/reboot重启系统(可能会提示need to boot,此时直接power off)

你可能感兴趣的:(Linux)