Ubuntu切换python版本

在ubuntu下经常编译软件需要用到python版本,有些软件需要的python版本并不固定。于是,在系统里装了好几个python版本,有时候需要用python2.7编译,有时候需要用到python3.5编译。
因此就涉及到了python版本切换的问题。本文就是针对这个问题整理出一种简单的切换python版本的方法,当然,切换gcc、java的版本也适用此方法。


查看本地电脑python安装情况

如下是我本地已安装的python版本情况:

1
2
3
victor@victor-HP:~$ python
python python2 python2.7 python3 python3.4 python3.4m python3.5 python3.5m python3m pythontex pythontex3
victor@victor-HP:~$ python


查看python是否加入到update-alternatives

1
2
3
4
5
6
7
victor@victor-HP:~$ update-alternatives --display python
python - 自动模式
链接目前指向 /usr/bin/python3.5
/usr/bin/python2.7 - 优先级 1
/usr/bin/python3.4 - 优先级 2
/usr/bin/python3.5 - 优先级 3
目前“最佳”的版本为 /usr/bin/python3.5

这个结果是我之前已经加入到 update-alternatives 中了,如果没有加入到,会有下面的提示:

1
update-alternatives: error: no alternatives for python


添加到替换组中

1
2
3
victor@victor-HP:~$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
victor@victor-HP:~$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.4 2
victor@victor-HP:~$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.5 3

各个参数的含义如下:

  • --install: 添加到替换组中;
  • /usr/bin/python: 链接;
  • python:名称;
  • /usr/bin/python2.7: 实际的程序路径;
  • 1 2 3: 最后一个参数表示优先级,数字越高,表示优先级越高;
  • <链接> 是指向 /etc/alternatives/<名称> 的符号链接。(如 /usr/bin/python)
  • <名称> 是该链接替换组的主控名。(如 python)
  • <路径> 是候选项目标文件的位置。(如 /usr/bin/python2.7)
  • <优先级> 是一个整数,在自动模式下,这个数字越高的选项,其优先级也就越高。

选择python替换版本

1
2
3
4
5
6
7
8
9
10
11
victor@victor-HP:~$ sudo update-alternatives --config python
3 个候选项可用于替换 python (提供 /usr/bin/python)。

选择 路径 优先级 状态
------------------------------------------------------------
* 0 /usr/bin/python3.5 3 自动模式
1 /usr/bin/python2.7 1 手动模式
2 /usr/bin/python3.4 2 手动模式
3 /usr/bin/python3.5 3 手动模式

要维持当前值[*]请按回车键,或者键入选择的编号:

update-alternatives的用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
victor@victor-HP:~$ update-alternatives --help
用法:update-alternatives [<选项> ...] <命令>

命令:
--install <链接> <名称> <路径> <优先级>
[--slave <链接> <名称> <路径>] ...
在系统中加入一组候选项。
--remove <名称> <路径> 从 <名称> 替换组中去除 <路径> 项。
--remove-all <名称> 从替换系统中删除 <名称> 替换组。
--auto <名称> 将 <名称> 的主链接切换到自动模式。
--display <名称> 显示关于 <名称> 替换组的信息。
--query <名称> 机器可读版的 --display <名称>.
--list <名称> 列出 <名称> 替换组中所有的可用候选项。
--get-selections 列出主要候选项名称以及它们的状态。
--set-selections 从标准输入中读入候选项的状态。
--config <名称> 列出 <名称> 替换组中的可选项,并就使用其中
哪一个,征询用户的意见。
--set <名称> <路径> 将 <路径> 设置为 <名称> 的候选项。
--all 对所有可选项一一调用 --config 命令。

<链接> 是指向 /etc/alternatives/<名称> 的符号链接。
(如 /usr/bin/pager)
<名称> 是该链接替换组的主控名。
(如 pager)
<路径> 是候选项目标文件的位置。
(如 /usr/bin/less)
<优先级> 是一个整数,在自动模式下,这个数字越高的选项,其优先级也就越高。

选项:
--altdir <目录> 改变候选项目录。
--admindir <目录> 设置 statoverride 文件的目录。
--log <文件> 改变日志文件。
--force 就算没有通过自检,也强制执行操作。
--skip-auto 在自动模式中跳过设置正确候选项的提示
(只与 --config 有关)
--verbose 启用详细输出。
--quiet 安静模式,输出尽可能少的信息。不显示输出信息。
--help 显示本帮助信息。
--version 显示版本信息。
victor@victor-HP:~$

可以用man update-alternatives查看更详细的信息。


参考资料

ubuntu 16.04下切换python版本小结
update-alternatives(8) - Linux man page
在Ubuntu中通过update-alternatives切换软件版本

Title:Ubuntu切换python版本

Author:Victor Huang

Time:2019-03-17 / 16:03

Link:http://wowothink.com/4d51f2a2/

License: Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0)