Ubuntu 切换默认python版本(python2和python3)

tech2024-10-19  11

Ubuntu update-alternatives 切换python默认版本(python2和python3)

1. 背景

在python3不断发展和python2不再维护的趋势下,公司里面的python2代码逐渐地被python3代替。所以在工作中时而需要python2时而需要python3 ,那么一个灵活切换Ubuntu系统默认python版本的方法便成为这个青黄不接阶段的“痒痒挠”!

2. 追本溯源

这里主要是追本溯源的研究一下一个应用程序在Ubuntu怎么被执行的,如果急着想看怎么切换python版本可以直接跳到“3. 使用 update-alternatives 来切换python的默认版本” 。

在Ubuntu的命令行中输入python后,系统将自动地去按顺序寻找环境变量中“PATH”里面列出的目录中名字为python的文件 ,然后执行它 。这个文件将是我们研究怎么切换python版本的入手点。

查看环境变量

echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

一般来说应用都会安装在“usr/bin”或者"usr/local/bin"下,我这里安装在了“usr/bin” 下面 。

用ls -l 看到“usr/bin/python”是个链接文件,我们一路查看下去最终找到了可执行文件的目录“ /usr/local/bin/python3.8”,如下: ls -l /usr/bin/python lrwxrwxrwx 1 root root 24 Sep 2 19:17 /usr/bin/python -> /etc/alternatives/python ls -l /etc/alternatives/python lrwxrwxrwx 1 root root 24 Sep 3 20:10 /etc/alternatives/python -> /usr/local/bin/python3.8 ls -l /usr/local/bin/python3.8 -rwxr-xr-x 1 root root 16691888 Sep 2 18:04 /usr/local/bin/python3.8 “/etc/alternatives/python”引出了本文的重点,update-alternatives指令。 将多个版本加入到alternatives的管理库中,由update-alternatives指令来灵活的选择具体要执行哪个可执行文件,具体操作方法请看下文 。

3. 使用 update-alternatives 来切换python的默认版本

将python2和python3加入update-alternatives的管理库中 sudo update-alternatives --install /usr/bin/python python /usr/local/bin/python3.8 200 sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100

“/usr/bin/python”: 代表环境变量中python的位置 “/usr/local/bin/python3.8”: 代表实际python安装的目录

查看update-alternatives管理库中python的信息 sudo update-alternatives --config python There are 2 choices for the alternative python (providing /usr/bin/python). Selection Path Priority Status ------------------------------------------------------------ 0 /usr/local/bin/python3.8 200 auto mode 1 /usr/bin/python2 100 manual mode * 2 /usr/local/bin/python3.8 200 manual mode Press <enter> to keep the current choice[*], or type selection number:

到此输入1或者2就可以灵活的去选择python2和python3了。

选择完之后回看一下python的版本信息来验证着个操作: python --version Python 3.8.0b4
最新回复(0)