Ubuntu16.04安装Python3.8,3.7,3.9(含卸载方法,支持多版本共存)-程序员宅基地

技术标签: python  ubuntu  Ubuntu软件  开发语言  

Ubuntu16.04安装Python3.8,3.7,3.9(含卸载方法,支持多版本共存)



前言

本文将按照Python的各个版本进行介绍的是Ubuntu16.04下安装相应版本Python的过程,可选择所需的版本进行查看,各个版本的命令基本相同,其中Python3.8的是图解版,其余的是命令版。本文仅在Ubuntu16.04下测试过,对于其他系统版本未测试,一般情况下具有通用性,这里看个人情况而定。
本文对于Python安装的定位是:独立安装,不修改或覆盖系统原有python的文件,包括软链接,易卸载


一、前期准备(所有版本)

1. 安装所需依赖

sudo apt-get install libffi-dev uuid-dev lzma-dev liblzma-dev libncurses5-dev libgdbm-dev sqlite3 libsqlite3-dev openssl tcl8.6-dev tk8.6-dev libreadline-dev zlib1g-dev build-essential bzip2 libbz2-1.0 libbz2-dev libc6-dev libdb-dev libexpat1 libexpat1-dev libgdbm3 libncursesw5-dev libpcap-dev libreadline5 libreadline6 libreadline6-dev libsqlite0 libsqlite0-dev libsqlite3-0 libssl-dev libssl1.0.0 libxml2-dev libxslt1-dev sqlite tcl tk tk-dev xz-utils zlib1g zlib1g-dev make  

在这里插入图片描述

2. 配置Python版本切换

Ubuntu系统自带有python2.7python3.5,这里先添加这两个的版本切换,即使用pythonpython3两个命令时使用哪个版本的python,由于Ubuntu系统对自带的两个python有一定程度的依赖,本文是不建议切换上述pythonpython3两个命令的Python版本的,否则会带来一些问题。

例如:升级Python后无法打开终端,系统启动总是提示软件更新时发生错误,无法打开系统设置的软件和更新界面等
命令的版本对应python => python2.7python3 => python3.5

① 查看候选列表中已有的Python版本(没有配置过的话,是不存在的):

sudo update-alternatives --list python

在这里插入图片描述
② 添加 python & python3 指向选择
最后的序号表示优先级,数字越大,优先级越高,会自动选取优先级高的作为默认指向,可手动更改默认指向,这里将系统默认的指向的优先级设置为100

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.5 99
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 100

在这里插入图片描述
在这里插入图片描述
③ 查看候选列表中已有的Python版本

sudo update-alternatives --list python
sudo update-alternatives --list python3

在这里插入图片描述

此时,python指向python2.7python3指向python3.5
在这里插入图片描述

④ 创建新版python的安装目录(便于卸载)

cd /usr/local
sudo mkdir -p /usr/local/python
sudo chmod -R 777 ./python

在这里插入图片描述

下面将进行各个版本的安装,至于版本号的选择,可自行到下面的网址去找,后续操作中修改其中的版本号即可。
官方网址:https://www.python.org/ftp/python/
在这里插入图片描述


二、Python3.8(3.8.11–详细图解)

1.下载源码安装包

这里选的是Python3.8的3.8.11版,如果下载较慢,可尝试连接手机热点进行下载。如果已准备了安装包,可以跳过该步骤。

cd ~
wget https://www.python.org/ftp/python/3.8.11/Python-3.8.11.tgz

在这里插入图片描述

2.创建安装目录

在上述前期准备中,已经在/usr/local目录下创建了一个python目录,那么各个新安装的python都将放在这里(安装多个的情况下),那么需要对每个版本的进行独立分包。实际上安装时如果没有创建会自动创建。

cd /usr/local/python
mkdir ./python3.8

在这里插入图片描述

3.解压安装包

cd ~
tar -xf ~/Python-3.8.11.tgz

在这里插入图片描述

4.配置将要安装的目录

这里的configure的参数配置有些门道,如果你想设置更多的东西,可以自行去查找。博主不想,所以下面的就足够了

cd ~/Python-3.8.11
./configure prefix=/usr/local/python/python3.8 --enable-optimizations

在这里插入图片描述
在这里插入图片描述

5.编译源码

很多教程都是编译和安装一起的,个人觉得,编译过程是会有一些问题的,例如某个模块不能编译,但是即使这样,安装还是会进行,这样就不是很好。
编译时间会比较长,耐心等待。。。。

cd ~/Python-3.8.11
make -j 2

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

6.安装

一定要使用altinstall,看过的教程有说明过使用install会覆盖安装,可能会导致Ubuntu崩溃的情况。

cd ~/Python-3.8.11
make altinstall  >&1|tee make.log

这里执行会很快,输出较多,没截到命令的图,看个结果吧。
在这里插入图片描述

7.添加环境变量

gedit ~/.bashrc

添加以下内容,其中第一行注释属于个人喜好,可不添加

#[Python3.8]
export PATH=$PATH:/usr/local/python/python3.8/bin

在这里插入图片描述
让环境变量生效

source ~/.bashrc

在这里插入图片描述

8. 添加和选择python&python3命令指向

添加命令指向【数值比前面设置的默认指向的优先级100小即可】

sudo update-alternatives --install /usr/bin/python python /usr/local/python/python3.8/bin/python3.8 38 
sudo update-alternatives --install /usr/bin/python3 python3 /usr/local/python/python3.8/bin/python3.8 38

在这里插入图片描述

选择python命令的默认版本【这里只是查看,按回车即可】

可以2.7,3.5,3.8,至于选取的问题,随着使用情景不同而有所改变,但使用完最好更换为Ubuntu系统默认的指向(python2.7),此时已经是默认的指向,会自动选取优先级高的。

sudo update-alternatives --config python

在这里插入图片描述

选择python3命令的默认版本【这里只是查看,按回车即可】

python3一般选择与Ubuntu系统默认的指向3.5,否则无法在启动器栏打开新终端。

sudo update-alternatives --config python3

在这里插入图片描述

这样之后,下面是各命令的启动版本
python2 ==> python2.7
python ==> python2.7
python3 ==> python3.5
python3.5 ==> python3.5
python3.8 ==> python3.8

在这里插入图片描述

pip 指向自动跟随 python 的指向
pip3 指向自动跟随 python3 的指向

9.pip安装依赖包

对于python3.8,安装后使用pip请以python3.8 -m pip install xxx的形式使用,同时,对于python3.8的使用,建议明确指明版本来使用,而不建议更改python3的指向,因为Ubuntu的图形界面一定程度上是依赖自带的两个版本的python,更改指向可能会带来意想不到的问题。

可更新python3.8自带的pip的版本,也可不更新,一般原版的更配,只是新版的进度条更好看,也没有版本更新警告。
python3.8 -m pip install --upgrade pip  
如果想切换回原版的
python3.8 -m pip install --upgrade pip==21.1.1
python3.8 -m pip install flask-socketio
python3.8 -m pip install numpy -i https://pypi.douban.com/simple/
python3.8 -m pip install pandas -i https://pypi.douban.com/simple/
python3.8 -m pip install kafka
python3.8 -m pip install kafka-python

在这里插入图片描述
在这里插入图片描述

10.删除安装文件

cd ~
sudo rm -r ./Python-3.8.11
rm -r ./Python-3.8.11.tgz
安装完成后建议重启一次系统

11.卸载方法(安装时无需操作)

这里给出卸载的命令,如果不需要了,可以进行卸载。

#1.移除指向
sudo update-alternatives --remove python /usr/local/python/python3.8/bin/python3.8
sudo update-alternatives --remove python3 /usr/local/python/python3.8/bin/python3.8
#2.删除安装目录,对于Linux而言便是卸载
rm -r /usr/local/python/python3.8
#3.移除环境变量
gedit ~/.bashrc
把上面添加的环境变量内容删除即可
source ~/.bashrc

三、Python3.7(3.7.9–已测试)

1.下载源码安装包
这里选的是Python3.7的3.7.9版,如果下载较慢,可尝试连接手机热点进行下载。如果已准备了安装包,可以跳过该步骤。

cd ~
wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz

2.创建安装目录
在上述前期准备中,已经在/usr/local目录下创建了一个python目录,实际上安装时如果没有创建会自动创建。

cd /usr/local/python
mkdir ./python3.7

3.解压安装包

cd ~
tar -xf ~/Python-3.7.9.tgz

4.配置将要安装的目录

cd ~/Python-3.7.9
./configure prefix=/usr/local/python/python3.7 --enable-optimizations

5.编译源码
3.7的编译时间相比其他版本会更长,耐心等待。。。。

cd ~/Python-3.7.9
make -j 2

6.安装
一定要使用altinstall,看过的教程有说明过使用install会覆盖安装,可能会导致Ubuntu崩溃的情况。

cd ~/Python-3.7.9
make altinstall  >&1|tee make.log

7.添加环境变量

gedit ~/.bashrc

添加以下内容,其中第一行注释属于个人喜好,可不添加

#[Python3.7]
export PATH=$PATH:/usr/local/python/python3.7/bin

让环境变量生效

source ~/.bashrc

8. 添加和选择python&python3命令指向
添加命令指向【数值比前面设置的默认指向的优先级100小即可】

sudo update-alternatives --install /usr/bin/python python /usr/local/python/python3.7/bin/python3.7 37 
sudo update-alternatives --install /usr/bin/python3 python3 /usr/local/python/python3.7/bin/python3.7 37

选择python命令的默认版本【这里只是查看,按回车即可】
*号指向应当是Ubuntu系统默认的指向(python2.7

sudo update-alternatives --config python

选择python3命令的默认版本【这里只是查看,按回车即可】
*号指向应当是Ubuntu系统默认的指向(python3.5

sudo update-alternatives --config python3

python3.7的启动命令
python3.7 ==> python3.7

9.pip安装依赖包
对于python3.7,安装后使用pip请以python3.7 -m pip install xxx的形式使用,同时,对于python3.7的使用,建议明确指明版本来使用,而不建议更改python3的指向,因为Ubuntu的图形界面一定程度上是依赖自带的两个版本的python,更改指向可能会带来意想不到的问题。

可更新python3.7自带的pip的版本,也可不更新,一般原版的更配,只是新版的进度条更好看,也没有版本更新警告。
python3.7 -m pip install --upgrade pip  
如果想切换回原版的
python3.7 -m pip install --upgrade pip==20.1.1
python3.7 -m pip install flask-socketio
python3.7 -m pip install numpy -i https://pypi.douban.com/simple/
python3.7 -m pip install pandas -i https://pypi.douban.com/simple/
python3.7 -m pip install kafka
python3.7 -m pip install kafka-python

10.删除安装文件

cd ~
sudo rm -r ./Python-3.7.9
rm -r ./Python-3.7.9.tgz
最好进行一次系统重启

11.卸载方法(安装时无需操作)
这里给出卸载的命令,如果不需要了,可以进行卸载。

#1.移除指向
sudo update-alternatives --remove python /usr/local/python/python3.7/bin/python3.7
sudo update-alternatives --remove python3 /usr/local/python/python3.7/bin/python3.7
#2.删除安装目录,对于Linux而言便是卸载
rm -r /usr/local/python/python3.7
#3.移除环境变量
gedit ~/.bashrc
把上面添加的环境变量内容删除即可
source ~/.bashrc

四、Python3.9(3.9.13–已测试)

1.下载源码安装包
这里选的是Python3.9的3.9.13版,如果下载较慢,可尝试连接手机热点进行下载。如果已准备了安装包,可以跳过该步骤。

cd ~
wget https://www.python.org/ftp/python/3.9.13/Python-3.9.13.tgz

2.创建安装目录
在上述前期准备中,已经在/usr/local目录下创建了一个python目录,实际上安装时如果没有创建会自动创建。

cd /usr/local/python
mkdir ./python3.9

3.解压安装包

cd ~
tar -xf ~/Python-3.9.13.tgz

4.配置将要安装的目录

cd ~/Python-3.9.13
./configure prefix=/usr/local/python/python3.9 --enable-optimizations

5.编译源码

cd ~/Python-3.9.13
make -j 2

6.安装

cd ~/Python-3.9.13
make altinstall  >&1|tee make.log

7.添加环境变量

gedit ~/.bashrc

添加以下内容,其中第一行注释属于个人喜好,可不添加

#[Python3.9]
export PATH=$PATH:/usr/local/python/python3.9/bin

让环境变量生效

source ~/.bashrc

8. 添加和选择python&python3命令指向
添加命令指向【数值比前面设置的默认指向的优先级100小即可】

sudo update-alternatives --install /usr/bin/python python /usr/local/python/python3.9/bin/python3.9 39 
sudo update-alternatives --install /usr/bin/python3 python3 /usr/local/python/python3.9/bin/python3.9 39

选择python命令的默认版本【这里只是查看,按回车即可】
*号指向应当是Ubuntu系统默认的指向(python2.7

sudo update-alternatives --config python

选择python3命令的默认版本【这里只是查看,按回车即可】
*号指向应当是Ubuntu系统默认的指向(python3.5

sudo update-alternatives --config python3

python3.9的启动命令 python3.9

9.pip安装依赖包
对于python3.9,安装后使用pip请以python3.9 -m pip install xxx的形式使用,同时,对于python3.9的使用,建议明确指明版本来使用,而不建议更改python3的指向,因为Ubuntu的图形界面一定程度上是依赖自带的两个版本的python,更改指向可能会带来意想不到的问题。

可更新python3.9自带的pip的版本,也可不更新,一般原版的更配,只是新版的进度条更好看,也没有版本更新警告。
python3.9 -m pip install --upgrade pip  
如果想切换回原版的
python3.9 -m pip install --upgrade pip==22.0.4
python3.9 -m pip install flask-socketio
python3.9 -m pip install numpy -i https://pypi.douban.com/simple/
python3.9 -m pip install pandas -i https://pypi.douban.com/simple/
python3.9 -m pip install kafka
python3.9 -m pip install kafka-python

10.删除安装文件

cd ~
sudo rm -r ./Python-3.9.13
rm -r ./Python-3.9.13.tgz
最好进行一次系统重启

11.卸载方法(安装时无需操作)
这里给出卸载的命令,如果不需要了,可以进行卸载。

#1.移除指向
sudo update-alternatives --remove python /usr/local/python/python3.9/bin/python3.9
sudo update-alternatives --remove python3 /usr/local/python/python3.9/bin/python3.9
#2.删除安装目录,对于Linux而言便是卸载
rm -r /usr/local/python/python3.9
#3.移除环境变量
gedit ~/.bashrc
把上面添加的环境变量内容删除即可
source ~/.bashrc

对于Python的其他版本,安装方法都基本类似,只需要更改对应的版本号即可。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_35743870/article/details/125903040

智能推荐

你时间总不够用?请收下这套最佳的分配时间的方法-程序员宅基地

文章浏览阅读399次。有谁要是为了赚得更多的钱而加班加点、 更加卖力地去工作, 他就不会真正变得更加富有。 被牺牲掉的业余时间的价值必须从其更高收入中扣除, 而且被牺牲掉的这部分的价值通常比财务上得到的要高很多。为了赚更多的钱而牺牲掉您的业余时间, 靠这种方法您不可能实现真正的富有。 真正的富有是指具有由少变多的本事, 而并非必须为此做出同样程度的牺牲。真正的成功意味着: 您能够获得更高的收入, 但您的...

错误处理:MySQL报错解决:插入数据时发生错误-程序员宅基地

文章浏览阅读2.2k次。大家好,今天我来分享一下在Linux上运行MySQL服务时遇到的一个插入数据时的报错以及其解决方法。这个报错信息非常具体,相信很多开发者和运维人员都曾经遇到过。记得关注我的公众号“运维家”,获取更多实用技巧和经验分享。一、问题描述当你尝试向MySQL数据库中插入数据时,可能会遇到以下报错信息:“无法插入数据,因为字段不匹配”。这时候,你可能会感到困惑,因为你明明已经按照正确的格式提供了数据,为什么..._mysql数据添加数据报错

idea插件 监听编辑板块切换_ideaeditor编辑监听-程序员宅基地

文章浏览阅读1.8k次。监听编辑板块切换开发工具:IntellJ Idea 开发语言:Kotlin功能描述:实现监听编辑板块切换效果图: 打印日志: 下面是实现该功能的代码: com.your.company.unique.plugin.id Djy 1.0

MAC下配置SSH免密登录及相关报错_mac ssh-rsa-程序员宅基地

文章浏览阅读418次。MAC下配置SSH免密登录及相关报错_mac ssh-rsa

excel统计分析——S-N-K法多重比较_snk检验 excel-程序员宅基地

文章浏览阅读779次,点赞22次,收藏8次。S-N-K法全称Newman-Keuls或Student-Newman-Keuls法,又称复极差检验法或q检验法。最小显著极差的计算与Tukey法相同,只是将第一自由度换成了秩次距m,即计算。是指当平均数由大到小排序后,相比较的两个平均数之间(含这两个平均数)包含的平均数个数。1、利用数据分析工具获取方差分析结果:步骤参照。其中,m为秩次距,df为误差项自由度,2.1计算需要用到的最小显著极差LSR。2、利用公式进行多重比较。2.2平均数间的多重比较。参考资料:生物统计学。_snk检验 excel

产品入库的PV操作-程序员宅基地

文章浏览阅读3k次,点赞4次,收藏19次。在一个仓库中可以存放A和B两种产品,要求: 1)每次只能存入一种–互斥访问 2)A产品数量 - B产品数量 < M 3)B产品数量 - A产品数量 < N其中,M,N是正整数,使用PV操作描述A和B的入库过程。semaphore mutex = 1;int countA = 0,countB = 0;PA:while(1){ if(countA - countB < M -

随便推点

HDU 2108 Shape of HDU-程序员宅基地

文章浏览阅读541次。Shape of HDUTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7061 Accepted Submission(s): 3200Problem Description话说上回讲到海东集团推选老总的_hdu 2108 shape of hdu

浅谈现代建筑照明中的智能照明控制系统-程序员宅基地

文章浏览阅读133次。但是,智能照明在我国一直没有引起足够的重视,大部分建筑物采用的照明依然是传统的照明控制方式,因此,本文就智能照明系统在现代建筑中的应用进行分析, 继而使人们认识智能照明系统的优点,为其发展提供一些推动作用。智能化已经成为全球建筑发展的主流技术,其涵盖多个方面。在现代建筑中, 智能照明系统的设备不但多而且比较分散,待实现的控制功能较多,因而如何构建经济 合理、实用的智能照明系统,如何确定智能照明系统在现代建筑照明中的控制策略 是亟待解决的问题,只有把这些问题解决了,智能照明系统才能够在现代建筑中广泛的应用。

CMake buildsystem_install_interface-程序员宅基地

文章浏览阅读683次。基于CMake的构建系统(buildsystem),其组织形式是一组高级逻辑目标(high-level logical targets)。每个目标(target)对应于一个可执行文件或库,或者一个包含自定义命令的自定义目标。构建系统说明了目标之间的依赖关系,从而确定构建顺序和响应更改时的重生成规则。_install_interface

Nginx网络服务-程序员宅基地

文章浏览阅读788次,点赞9次,收藏28次。先使用命令/usr/local/nginx/sbin/nginx -V 查看已安装的 Nginx 是否包HTTP_STUB_STATUS 模块,cat /opt/nginx-1.12.0/auto/options | grep YES #查看nginx已安装的所有模块。在Linux平台.上,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。

数据流图——从软考真题中学画数据流图DFD_招聘考试成绩管理数据流程图-程序员宅基地

文章浏览阅读2.7w次,点赞211次,收藏852次。某高校欲开发一个成绩管理系统,记录并管理所有选修课程的学生的平时成绩和考试成绩,其主要功能描述如下:  1. 每门课程都有3到6个单元构成,每个单元结束后会进行一次测试,其成绩作为这门课程的平时成绩。课程结束后进行期末考试,其成绩作为这门课程的考试成绩。  2. 学生的平时成绩和考试成绩均由每门课程的主讲教师上传给成绩管理系统。  3. 在记录学生成绩之前,系统需要验证这些成绩是否有效。首先..._招聘考试成绩管理数据流程图

oracle 除法 余数,oracle基本操作符/运算符/操作语言..-程序员宅基地

文章浏览阅读1.9k次。算术操作符:无论是在sqlserver,或者是java中,每种语言它都有算术操作符,大同小异。Oracle中算术操作符(+)(-)(*)(/)值得注意的是:/在oracle中就相当于显示中的除法5/2= 2.5比较操作符:其中等号可以换成其他运算符:(后面为该操作符的单条件查询样例)!=不等于selectempno,ename,jobfromscott.empwherejob!..._oracl除后剩余数