您的位置:首页 > 运维架构 > Linux

【译】Debian Linux下如何设置与更改默认python版本

2016-10-27 22:07 721 查看

前言

本文翻译自
linuxconfig.org
一篇文章,原文地址

python2 与 python3在许多方面的差异较大,在使用2到3的过程系统难免会有多个版本的python,本文将对如何设置或改变默认的python 版本做一下说明。

使用
ls
命令查看当前系统存在哪些python版本:

$ ls /usr/bin/python*
/usr/bin/python  /usr/bin/python2  /usr/bin/python2.7  /usr/bin/python3  /usr/bin/python3.4  /usr/bin/python3.4m  /usr/bin/python3m


使用下面命令查看当前系统的默认版本

$ python --version
Python 2.7.8


方法一: 基于当前用户层次的修改

【不推荐,因为python 本身是在系统层次。】

改变python版本一个简单的方式就算使用命令
alias
,将下面语句添加到
~/.bashrc
文件底部即可。

注意:此为原文内容,
.bash
文件的修改仅针对bash下生效,比如我使用的是zsh,此方法就不行了,解决方法是将
~/.bashrc
文件 改为
~/.zshrc
,其他地方不变


alias python='/usr/bin/python3.4'


然后通过下面命令使文件生效

$ source ~/.bashrc


现在查看默认python版本

$ python --version
Python 3.4.2


【补充】:
alias
命令的作用就是设置指令的别名,具体可自行搜索。

方法二:系统层次的修改

系统层次下更改python默认版本可使用
update-alternatives
命令,如下:

进入root用户,使用下面命令列举可用的python版本

# update-alternatives --list python
update-alternatives: error: no alternatives for python


可能会出现此错误信息,原因是python版本没有使用
update-alternatives
命令进行认证添加,所以我们需要更新 python版本到可用版本,包括
python2.7
python3.4
两个版本:

# update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
update-alternatives: using /usr/bin/python2.7 to provide /usr/bin/python (python) in auto mode
# update-alternatives --install /usr/bin/python python /usr/bin/python3.4 2
update-alternatives: using /usr/bin/python3.4 to provide /usr/bin/python (python) in auto mode


-- install
操作表示新建一个符号链接

【linux下有两种链接方式,分别是 硬链接(Hard Link)和 符号链接(Symbolic Link),请自行搜索】。

所以以上命令的目的是 使用
update-alternatives
创建了个python的符号链接,指向了,
/usr/bin/python2.7
,命名为1;使用
update-alternatives
创建了个python的符号链接,指向了,
/usr/bin/python3.4
,命名为2。

现在查看默认python版本,是3.4.2。【举例中因为第一种方法已经把python版本设置为3.4了。】

$ python --version
Python 3.4.2


接着,我们查看当前可用的python版本

# update-alternatives --list python
/usr/bin/python2.7
/usr/bin/python3.4


现在我们设置默认的python版本。

# update-alternatives --config python


如下,需要选择默认python的id,就是在添加时使用的号码 1 和 2 :



现在查看默认python版本,已经变为2.7版本。

# python --version
Python 2.7.8


备注

如果长时间不用其他版本的python,可以将添加到
update-alternatives
列表的python 版本移除,如下,移除
update-alternatives
列表的python2.7:

# update-alternatives --remove python /usr/bin/python2.7
update-alternatives: removing manually selected alternative - switching python to auto mode
update-alternatives: using /usr/bin/python3.4 to provide /usr/bin/python (python) in auto mode


以上。

【个人总结】

原文中第一种方法更改后用户登录或重启会仍然有效,原因是使用终端运行bash的时候会自动读取
.bashrc
文件使其生效。

本人使用的shell为
zsh
,所以当然不能更改
.bashrc
文件,之前写环境变量直接写在
.profile
文件中,
.profile
文件是在用户登录的时候加载,然后就想到直接写在该文件中。source后生效, 但是重启 或重新登录用户后python 版本依然没变!个人猜测原因如下:

文件加载的顺序

用户登录加载
~/.profile
文件, python版本更改,此时已经达到改默认python的目的。

用户打开终端,启动了
zsh
,系统读取
.zshrc
文件,其中
.zshrc
文件中各种环境变量依然指向原来的路径,所以python 又被指向原来路径。

所以,个人总结:

使用 python更改版本的命令直接写在
.zshrc
文件 (测试可以的)

一些命令的改变写在对应shell版本中, 启动终端时生效。

牵扯到账号密码等环境变量写在
.profile
文件中,用户登录时生效。

为了一些不必要的麻烦建议还是使用第二种直接在系统层次改python版本比较好,然而这又会导致python扩展的问题,所以最好就是基于大版本(2或者3)使用虚拟环境。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: