转载链接:https://www.cnblogs.com/lczmx/p/12428041.html

安装Python3.8

 目前Ubuntu自带的Python版本为3.6,但官方都出3.8了,能不试一下新的功能吗?

第一步:下载Python3.8的源码

点击这里打开网址
选择下载tgz包(“Download Gzipped source tarball ”),解压

第二步:更新包列表并安装构建Python源所需的包

输入这三个命令

sudo apt update
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget
sudo apt-get install make

第三步:安装Python3.8

cd 到Python解压目录,然后输入以下命令

sudo ./configure --enable-optimizations
sudo make altinstall

到这里Python3.8已经安装完成,但是只能输入python3.8打开,这里等到下面一并解决

安装pip和pip3
直接输入,安装 

sudo apt install python-pip
sudo apt install python3-pip

此时,ubuntu给我安装了Python2.7、pip、pip2、pip3

解决兼容问题

  我的想法是:Python2.7、Python3.6、Python3.8之间可以随便切换,而且pip和pip3会动态指向我切换的Python版本上(pip2就让他指向Python2.7吧)

第一步:解决Python版本切换问题

目前网上已经有很好的教程了,使用update-alternatives 来为整个系统更改Python 版本的方法更好。

找到各个Python的路径,使用which命令

which python2.7
which python3.6
which python3.8

记录好他们所在路径,我这里是

/usr/bin/python2.7/usr/bin/python3.6/usr/local/bin/python3.8

接下来就是重点了,使用update-alternatives命令:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2sudo update-alternatives --install /usr/bin/python python /usr/local/bin/python3.8 3

  这里的最后一个参数是优先级,数越大越高,倒数第二个参数是各个版本Python所在位置,即我们上一步记录的东西

  输入:    

sudo update-alternatives --config python

 选择并切换Python版本,至此,Python版本兼容性问题已经解决

第二步:解决pip、pip2、pip3指向问题

 当我切换到Python3.8输入pip -V,查看pip指向哪里之时,会报错“ from pip import main ImportError: cannot import name 'main' ”
听网上说,主要是由于ubuntu升级pip的版本后导致的,
我的做法是修改pip文件

注:一定要备份pip文件,包括pip、pip2、pip3、pip3.8(Python3.8的)

输入echo $PATH,可以看到环境变量:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

不巧的是pip和pip3在/usr/local/bin目录下,而/usr/bin目录下也有pip和pip3,由优先级知道输入pip命令会优先执行/usr/local/bin目录下的。
所以我这里修改的是/usr/local/bin下的pip、pip3、pip3.8和/usr/bin下的pip2,假如想改/usr/bin下的pip和pip3的话可以直接cp过去(注意先备份)
下面是修改的代码,可以直接复制粘贴过去

pip

#!/usr/bin/python
# GENERATED BY DEBIANimport sys# Run the main entry point, similarly to how setuptools does it, but because
# we didn't install the actual entry point from setup.py, don't use the
# pkg_resources API.
if sys.version_info.major == 3 and sys.version_info.minor == 8:from pip import __main__if __name__ == '__main__':sys.exit(__main__._main())
else:from pip import mainif __name__ == '__main__':sys.exit(main())

pip2

#!/usr/bin/python2.7
# GENERATED BY DEBIANimport sys# Run the main entry point, similarly to how setuptools does it, but because
# we didn't install the actual entry point from setup.py, don't use the
# pkg_resources API.
from pip import main
if __name__ == '__main__':sys.exit(main())

pip3和pip3.8

#!/usr/bin/python
# -*- coding:utf-8 -*-
# GENERATED BY DEBIANimport sys
import os# Run the main entry point, similarly to how setuptools does it, but because
# we didn't install the actual entry point from setup.py, don't use the
# pkg_resources API.
if sys.version_info.major == 3:if sys.version_info.minor == 8:from pip import __main__if __name__ == '__main__':sys.exit(__main__._main())else:from pip import mainif __name__ == '__main__':sys.exit(main())
else:msg = "当前Python版本为Python%s.%s,不能使用pip3!" % (sys.version_info.major, sys.version_info.minor)os.system("echo %s" % msg)os.system("""echo "请使用'update-alternatives --config python' 切换Python版本" """)

解决ubuntu18.04中python兼容以及pip兼容问题相关推荐

  1. 解决Ubuntu18.04中启动kworker等占用系统cpu过高问题

    提要 这个问题困扰我好久,真的很烦人,一般网上的解决方式也不是特别好用.后来说一下我的解决方案 正文 刚装的Ubuntu18.04出现硬盘短时间内被占满,通过查询可以看出在/var/log/下出现两个 ...

  2. 解决在Ubuntu18.04中firefox打开网页出现建立安全失败并提示PR_END_OF_FILE_ERROR

    解决在Ubuntu18.04中firefox打开网页出现建立安全失败并提示PR_END_OF_FILE_ERROR 解决办法 打开设置 找到网络 打开网络代理栏中的最右边的按钮 选择自动

  3. 在Ubuntu18.04中安装wps并且解决文字字体缺失的问题

    在Ubuntu18.04中安装wps并且解决文字字体缺失的问题 在ubuntu中安装wps对于很多人来说会比较的简单,但是对于像我一样刚刚接触ubuntu的计算机小白来说,也并非很简单,安装的过程中也 ...

  4. 在Ubuntu18.04中安装ROS IDE RoboWare Studio 和Visual Studio Code

    安装ROS IDE 前言 一.安装RoboWare Studio 二.安装Visual Studio Code 参考文献 前言 一款好的开发工具可以是开发效率提升,ROS官方推荐了常用的ROS开发环境 ...

  5. Ubuntu18.04中搭建事件相机模拟器rpg-esim环境

    Ubuntu18.04中搭建事件相机模拟器rpg-esim环境 esim 是 ETH 开发的一款的模拟事件相机工作原理的仿真器,其是基于ROS环境的,在安装esim环境之前,需要先安装ROS.在官方给 ...

  6. ubuntu18.04 创建python虚拟环境(workon:未找到命令)

    ubuntu18.04 创建python虚拟环境 1. 安装软件包 sudo pip3 install virtualenv # 安装虚拟环境sudo pip3 install virtualenvw ...

  7. Ubuntu18.04中Anaconda启动 Navigator

    Ubuntu18.04中Anaconda启动 Navigator 方法一: source ~/anaconda3/bin/activate root anaconda-navigator 1 2 方法 ...

  8. 解决ubuntu18.04环境下无法调整分辨率的问题

    解决ubuntu18.04环境下无法调整分辨率的问题 问题来源 一般ubuntu环境下不能调整分辨率主要是因为显卡驱动出问题,所以本文通过执行显卡驱动相关的操作解决分辨率的问题. 解决问题 如果电脑上 ...

  9. 解决Ubuntu18.04不能用Xshell使用root用户登录

    今天使用Xshell6连接Ubuntu18.04时,连接普通用户可以,但是连接root用户不行 我用了网上很多办法不行~~~~~ 然后看到这篇文章了 https://www.cnblogs.com/a ...

最新文章

  1. vue-cli脚手架
  2. Java 项目UML反向工程转化工具
  3. Nginx实现负载均衡时常用的分配服务器策略
  4. jMeter debug postprocessor的用法
  5. java类似sizeof_如何用Java编写类似C的Sizeof函数
  6. 通讯模块板载天线设计方法
  7. PAT乙级 1038 统计同成绩学生(map的解法)
  8. 二甲医院云服务器,医院用上云计算 病情上传到云端可行否?
  9. 程序编号以后计算机能够查出,华威大学研究人员开发出计算机程序,可发现量子计算机中的“泄漏”...
  10. C语言断言assert详解
  11. Linux网络编程之epoll模型
  12. GEE主成分分析全解析
  13. 【知识图谱】实践篇——基于医疗知识图谱的问答系统实践(Part5-完结):信息检索与结果组装
  14. elasticsearch 单节点状态yellow解决方法
  15. return function和return function()的区别
  16. Scala+Hadoop+Spark开发
  17. CAD高版本转低版本的方法有哪些?你一定用的到哦
  18. EventBus的介绍
  19. font-awesome图标显示问题解决方案
  20. telnet连接上后自动断开_用于确定网络端口连接到办公室端口工具介绍

热门文章

  1. P4: Programming Protocol-Independent Packet Processors
  2. Javascript之ES7详解
  3. 国家哀悼日将网站全部变成灰色的代码
  4. 你可能不需要 jQuery!使用原生 JavaScript 进行开发
  5. Ural_1030. Titanic
  6. cisco engine memory
  7. java 虚拟机内存管理_java虚拟机内存管理
  8. docker run命令_CVE-2019-14271:Docker cp命令漏洞分析
  9. 信息学奥赛一本通 1307:【例1.3】高精度乘法 | 1174:大整数乘法 | OpenJudge NOI 1.13 09:大整数乘法
  10. 信息奥赛一本通(1310:【例2.2】车厢重组)