Linux下的Python3版本切换+具体细节的学习笔记
Prerequisites
- 在ubuntu22.0.4中,repository中默认有python3.8,但version<3.8已经不在其默认库中,需要去下载源代码;
- 切换过程依赖于命令:update-alternativaes ;
- 本文将构建一个python[ 3.10 3.8 3.6 3.5 ]的选择器;
更新系统
在安装软件前,首先更新系统
sudo apt update -y && sudo apt upgrade -y
具体步骤
步骤 1 安装 Python 3.10
我们将从 Ubuntu 22.04 默认存储库中提供的最新版本开始。
要安装python3.10,请执行以下命令:
sudo apt install python3.10 -y
要检查已安装的版本,请执行命令python3.10 -V
;
您应该收到以下输出:
root@host:~# python3.10 -V
Python 3.10.6
步骤 2 安装 Python 3.8
我们列表中的第二个 Python 版本是 Python 3.8。要安装它,请执行以下命令:
sudo apt install python3.8 -y
要检查已安装的版本,请执行命令python3.8 -V
;
您应该收到以下输出:
root@host:~# python3.8 -V
Python 3.8.16
↑以上是可以直接在 ubuntu 22.04 的default repo中直接sudo install的↑
↓以下需要去下载源代码构建↓
步骤 3 安装 Python 3.6
第三个 Python 版本将是 Python 3.6 版本。让我们执行以下命令:
sudo apt install python3.6 -y
如果之前没有做过类似的部署,安装过程将失败并显示以下消息:
root@host:~# sudo apt install python3.6 -y
正在读取软件包列表...完成
构建依赖关系树...完成
正在读取状态信息...完成
E:无法找到包 python3.6
E: 无法通过 glob 'python3.6' 找到任何包
这意味着 Python3.6 不在 Ubuntu 22.04 的默认存储库中;
3.1 我们需要从源代码下载构建版本,有两种方式可供选择:
3.1.1 方法一:
执行以下命令:
cd /opt
wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
3.1.2 方法二:
进入网址:https://www.python.org/ftp/python/3.6.9 下载.tgz文件,下载后执行
sudo cp /Downloads/Python-3.6.9.tgz /opt
3.2 以上方式任选其一(推荐第二种下载更快),进行解压:
tar xfv Python-3.6.9.tgz
cd /Python-3.6.9
3.3 在继续安装之前,我们需要安装 Python 低版本的依赖:
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev libgdbm-dev libnss3- dev libedit-dev libc6-dev
3.4 完成这些准备工作后,输入以下命令来构建和安装:
./configure --enable-optimizations
sudo make altinstall
要检查已安装的版本,请执行命令python3.6 -V
;
您应该收到以下输出:
root@host:/opt/Python-3.6.9# python3.6 -V
Python 3.6.9
Python3.6安装成功,v3.5也将按照该方法安装
步骤 4 安装 Python 3.5
本文将要安装的最后一个 Python 版本是 Python3.5 版本;
参考Python3.6 的安装方法进行下载和安装,此处只用了方法一,方法二请照猫画虎;
此处给出python3.5网址https://www.python.org/ftp/python/3.5.10
cd /opt
wget https://www.python.org/ftp/python/3.5.10/Python-3.5.10.tgz
tar xfv Python-3.5.10.tgz
cd Python-3.5.10/
./configure --enable-optimizations
sudo make altinstall
要检查已安装的版本,请执行命令python3.5 -V;
您应该收到以下输出:
root@host:/opt/Python-3.5.10# python3.5 -V
Python 3.5.10
步骤 5 实现在 Python 版本之间切换
全部的python版本已经部署完毕,下面解释如何在不同的 Python 版本之间切换。
- 默认存储库安装的 Python 版本位于/usr/bin目录中;
- 从源代码构建的位于/usr/local/bin目录中;
- 为每一个已安装的 Python 版本创建符号链接,包括已安装 Python 版本的路径。
逐个执行以下命令:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.10 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 2
sudo update-alternatives --install /usr/local/bin/python python /usr/local/bin/python3.6 3
sudo update-alternatives --install /usr/local/bin/python python /usr/local/bin/python3.5 4
应该逐个看到类似这样的输出:
root@host:/# sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.10 1
update-alternatives: using /usr/bin/python3.10 to provide /usr/bin/python (python) in auto mode
root@host:/opt/Python-3.6.9# sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 2
update-alternatives: using /usr/bin/python3.8 to provide /usr/bin/python (python) in auto mode
root@host:/opt/Python-3.6.9# sudo update-alternatives --install /usr/local/bin/python python /usr/local/bin/python3.6 3
update-alternatives: renaming python link from /usr/bin/python to /usr/local/bin/python
update-alternatives: using /usr/local/bin/python3.6 to provide /usr/local/bin/python (python) in auto mode
root@host:/opt/Python-3.6.9# sudo update-alternatives --install /usr/local/bin/python python /usr/local/bin/python3.5 4
update-alternatives: using /usr/local/bin/python3.5 to provide /usr/local/bin/python (python) in auto mode
要列出并选择应该激活的 Python 版本,请执行以下命令:
sudo update-alternatives --config python
输出应如下所示:
root@host:~$ sudo update-alternatives --config python
[sudo] root 的密码:
有 4 个候选项可用于替换 python (提供 /usr/local/bin/python)。
选择 路径 优先级 状态
------------------------------------------------------------
0 /usr/local/bin/python3.5 4 自动模式
* 1 /usr/bin/python3.10 1 手动模式
2 /usr/bin/python3.8 2 手动模式
3 /usr/local/bin/python3.5 4 手动模式
4 /usr/local/bin/python3.6 3 手动模式
要维持当前值[*]请按<回车键>,或者键入选择的编号:2
update-alternatives: 使用 /usr/bin/python3.8 来在手动模式中提供 /usr/local/bin/python (python)
通过手动选择优先级2,即将python解释器手动更改为python3.8
输入python -V
验证:
root@host:~$ python -V
Python 3.8.19
出现问题时,删除update-alternatives创建的软链接:
sudo update-alternatives --remove python /usr/bin/python3.8
sudo update-alternatives --remove python /usr/bin/python3.10
sudo update-alternatives --remove python /usr/local/bin/python3.5
sudo update-alternatives --remove python /usr/local/bin/python3.6
学习笔记之Linux目录
Linux中: /usr/bin 与 /usr/local/bin 使用区别
usr 指 Unix System Resource,不是User
- /usr/bin下面的都是系统预装的可执行程序,会随着系统升级而改变
- /usr/local/bin目录是给用户放置自己的可执行程序的地方,推荐放在这里,不会被系统升级而覆盖同名文件
如果两个目录下有相同的可执行程序,谁优先执行受到PATH环境变量的影响
echo $PATH
/usr/local/bin:/usr/bin
/usr/local/bin 是优先于 /usr/bin 的