Ubuntu16.04 安装多个python版本的问题及解决方法
作者:FrigidWinter 发布时间:2021-05-26 05:27:11
Ubuntu16.04自带python2.7与python3.5,某个项目编译却要求python版本大于等于3.7,遂考虑在原系统基础上再安装python3.8。
1 下载安装python3.8
Ubuntu 官方 apt 库中还未收录 python 3.8,因此添加 deadsnakes PPA 源安装python3.8,否则会出现以下错误
错误1
:
E: 无法定位软件包 python3.8
E: 无法按照 glob ‘python3.8' 找到任何软件包
E: 无法按照正则表达式 python3.8 找到任何软件包
解决方法:运行以下指令安装python3.8
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.8
此时python3版本还是指向python3.5,可以输入
cd /usr/bin && ll
查看
2 修改python3默认指向
sudo rm python3
sudo ln -s python3.8 python3
查看python版本验证修改成功:
$ python3 --version
python3.8.9
3 无法打开终端解决方案
按1、2步骤安装完python3后,一般无法打开终端错误2
:
$ gnome-terminal
Traceback (most recent call last):
File "/usr/bin/gnome-terminal", line 9, in <module>
from gi.repository import GLib, Gio
File "/usr/lib/python3/dist-packages/gi/__init__.py", line 42, in <module>
from . import _gi
ImportError: cannot import name '_gi'
解决方法:
cd /usr/lib/python3/dist-packages/gi/
# 下面的35 改成38 表示从py3.5改到py3.8
sudo mv _gi_cairo.cpython-35m-x86_64-linux-gnu.so _gi_cairo.cpython-38m-x86_64-linux-gnu.so
sudo mv _gi.cpython-35m-x86_64-linux-gnu.so _gi.cpython-38m-x86_64-linux-gnu.so
接下来修改
sudo gedit /usr/bin/gnome-terminal
将python3改为python
问题解决。
4 python版本的卸载
sudo apt remove python3.8
sudo apt autoremove python3.8
5 python多版本管理
参考https://www.jb51.net/article/221437.htm,值得注意,仅按该博文的方式配置仍会打不开终端,建议先按照本文方式配置后再添加管理。
将 python 各版本添加到 update-alternatives
$ which python3.8
/usr/bin/python3.8
$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
$ which python3.5
/usr/bin/python3.5
$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 2
通过下面配置切换版本
$ sudo update-alternatives --config python3
There are 2 choices for the alternative python3 (providing /usr/bin/python3).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/python3.5 2 auto mode
1 /usr/bin/python3.5 2 manual mode
2 /usr/bin/python3.8 1 manual mode
Press <enter> to keep the current choice[*], or type selection number: 2
6 升级pip3/pip
对于初次安装python的Ubuntu系统而言,pip等级较低,这种情况下进行pip install高版本库可能会出现一系列的问题,例如:
错误3
:AttributeError: module ‘platform' has no attribute ‘linux_distribution'
解决方法:对pip版本进行升级
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python3 get-pip.py --force-reinstall
来源:https://blog.csdn.net/FRIGIDWINTER/article/details/119971657


猜你喜欢
- list.asp<%@LANGUAGE="VBSCRIPT" CODEPAGE="936&qu
- 其实想实现这种功能很简单,首先要上传一个RAR的解压程序,就是RAR自己的解压程序,只需要它的核心程序RAR.EXE这个文件就可以了。然后就
- # -*- coding: utf8 -*-'''Created on 2013-12-19@author: goo
- 作为一个合格的开发者,在本地环境下完成开发还远远不够,我们需要把Web App部署到远程服务器上,这样,广大用户才能访问到网站。很多做开发的
- 一般来说,函数(function)是组织好的、可重复使用的、具有一定功能的代码段。函数能提高应用的模块性和代码的重复利用率,在Python中
- 一、读者指引 读者指引帮助你掌握本文的梗概。以免你看了大半才明白这编文章不适合你,给你造成视觉污染。如果你正在用ASP+XML写一些程序,或
- 什么是goroutine?Goroutine是建立在线程之上的轻量级的抽象。它允许我们以非常低的代价在同一个地址空间中并行地执行多个函数或者
- 写在前面从本节开始,计算机视觉教程进入第三章节——图像特征提取。在本章,你会见到一张简简单单的图片中
- 由于项目需要,最近在用基于Python语言的一个后端框架Django开发web应用。不得不说,Django继承了Python的简洁性,用它来
- 脚本如下: drop table table1; CREATE TABLE `andrew`.`table1` ( `name` VARCH
- Python有许多吸引力,如效率,代码可读性和速度,使其成为数据科学爱好者的首选编程语言。Python通常是希望升级其应用程序功能的数据科学
- 本文实例为大家分享了Vue+Websocket简单实现聊天功能的具体代码,供大家参考,具体内容如下效果图:聊天室此篇文章是针对Websock
- 下面看下js字符串的常用操作方法,具体内容如下所述:charAt()
- numpy.linalg.norm函数的使用1、linalg = linear(线性)+ algebra(代数),norm则表示范数。首先需
- 目录:1.安装python32.安装flask3.简单的服务器代码编写4.设置FLASK_APP路径并启动服务器程序1.安装python3p
- 前言关于mockjs,官网描述的是1.前后端分离2.不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响应数据。3.数据类型丰富4.
- 前言:对于Web开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编辑功能,一般常见的主要有两种处理方式:行内编辑和弹出框编辑
- mybatis plus实体类中字段映射mysql中的json格式1.实体类中有个属性是其他对象或者是List;在数据库中存储时使用的是my
- 最近学习python并发,于是对多进程、多线程、异步和协程做了个总结。一、多线程多线程就是允许一个进程内存在多个控制权,以便让多个函数同时处
- 目前网络上大部分博客的结论都是这样的:Python不允许程序员选择采用传值还是传 引用。Python参数传递采用的肯定是“传对象引用”的方式