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

来源:互联网 发布:剑网3脸型数据 编辑:程序博客网 时间:2024/06/05 23:47

前言

本文翻译自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 --versionPython 2.7.8

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

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

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

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

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

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

$ source ~/.bashrc

现在查看默认python版本

$ python --versionPython 3.4.2

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

方法二:系统层次的修改

系统层次下更改python默认版本可使用 update-alternatives命令,如下:
进入root用户,使用下面命令列举可用的python版本

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

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

# update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1update-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 2update-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 --versionPython 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 config

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

# python --versionPython 2.7.8

备注

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

# update-alternatives --remove python /usr/bin/python2.7update-alternatives: removing manually selected alternative - switching python to auto modeupdate-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)使用虚拟环境。。

0 0
原创粉丝点击