原创声明:
我们采用的linux server通常会自带一个Python环境,此时如果因为版本老自己升级,或者要安装anaconda,就会让自己的server出现双python环境的情况。
本次跳坑是后者,因为要运行的code需要各种ML库等等,所以就干脆装了一个anaconda,结果就一步步踏进深渊。。。
0 环境检查
- 90%:
1 2 3 4 |
<span class="hljs-variable">$ </span>which python <span class="hljs-variable">$ </span>which pip <span class="hljs-variable">$ </span>python -<span class="hljs-constant">V</span> <span class="hljs-variable">$ </span>pip -<span class="hljs-constant">V</span> |
分别在普通用户和root用户下,运行这四条command,查看python版本及路径,如果两个用户下四条命令对应的都是你新安装的python,那你90%可能性不会被双python困扰。如果此处不如我们所愿,请先参考 1 配置环境变量,解决90% 完成配置。
- 剩下9%:
1 |
<span class="hljs-variable">$ </span>/usr/bin/python -<span class="hljs-constant">V</span> |
如果上面检查已经通过,你还是碰到问题,检查一下这个目录中的python,如果并非你手动安装的新版,那么请继续往下看 2 针对9%
猜想:为什么所有环境变量都指向新的python,还有可能调用到老python,进而引发一系列问题?猜想是linux下有些python安装脚本(.py)是采用首行指定运行环境来运行的
1 2 |
<span class="hljs-comment">#!/usr/bin/python</span> <span class="hljs-comment"># 有些.py文件首行会指定运行python目录,然后shell运行</span> |
- 还有1%:我也不清楚是什么情况,你再搜搜其他解决方案
1 配置环境变量,解决90%
类似windows配置的环境变量,linux同样有自己的环境变量,而且,每个用户各有不同,所以,安装完python后,首先要做的就是确认环境,如果上面4条检查命令不能全部对应到新python,那么请手动将新版本python添加到环境变量中:
普通用户:
- 进入 用户目录 cd ~
- 修改 .bashrc,在文件最后添加一行(根据新python实际目录来修改)
export PATH="/usr/lib/anaconda2/bin:$PATH"
$ source ~/.bashrc
使设置生效
root 用户:
- sudo su进入root 用户
- 重复普通用户步骤
检查环境:
- 再检查一遍环境确认设置生效,顺利的话此时应该通过“90”检查了
2 针对9%
如果上面配置全都设置好,还是在安装依赖时有各种问题,此时,我们手动将/usr/bin/python
指向的python改一下
- 备份原先文件
/usr/bin/python
- 在此处手动创建一个指向新python的软连接
sudo ln -s /usr/lib/anaconda2/bin/python /usr/local/bin/python
- 去试验问题是否解决
- 再把此处修改改回来
强烈建议此处的软连接在解决问题后再改回来,毕竟这是系统默认python,如果不该回来可能有一些莫名其妙的问题
3 剩下1%
抱歉我也无能为力。。。God bless you
end

文章评论
可以尝试用linux 下的alternatives 命令解决