ubuntu16.04,卸载系统自带的 python3.5 引发了一宗惨案,好在最终完美解决_木元心的博客 - CSDN 博客

date
Nov 17, 2021
Last edited time
Nov 20, 2021 02:15 PM
status
Published
slug
ubuntu1604卸载python3后的处理方式
tags
Linux
summary
ubuntu16.04卸载python3后的处理方式 转载
type
Post
Field
Plat
ubuntu16.04,卸载系统自带的python3.5引发了一宗惨案,好在最终完美解决_木元心的博客-CSDN博客
!如果着急解决问题,建议直接跳到【解决问题】章节 由于项目需求,在调试代码的时候发现一个由python版本导致的错误(Ubuntu16.04 python3.5m/pybind11/detail/internals.h:110:34: error: 'nullptr),同事用的python3.6没问题,而我虚拟机上只装了python2.7和python3.5,所以第一反应是安装python3.6。顺便附一下python3.6安装过程(尝试用源码编译,但会报错,没深究) 安装python3.6 Ubuntu16.04的软件仓库(源)中python的最高版本就是python3.5,所以无法直接用apt来安装 sudo add-apt-repository ppa:deadsnakes/ppa sudo apt-get update sudo apt-get install python3.6 sudo add-apt-repository ppa:jonathonf/python-3.6 sudo apt-get update sudo apt-get install python3.6 设置python优先级 sudo update-alternatives --config python update-alternatives: error: no alternatives for python3 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.5 1 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2 sudo update-alternatives --set python /usr/bin/python3.6 设置python关联版本 在终端输入python,会默认使用你设置的版本,但是如果你想在终端输入python时显示2.7的版本,输入python3时才是你想要的版本时,你就需要关联一下版本。有时候安装了python3版本,但是在终端输入python3时却提示 bash: /usr/bin/python3: No such file or directory 则需要进行下面操作 为python安装对应的pip curl https://bootstrap.pypa.io/ez_setup.py -o - | python3.6 && python3.6 -m easy_install pip curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" python3 get-pip.py --user 如果pip3需要升级,但用常用方法升不了级时,可参考这篇帖子 【Ubuntu16.04 升级pip问题】you are using pip version 8.1.1, however version 20.0.2 is available.
ubuntu16.04,卸载系统自带的python3.5引发了一宗惨案,好在最终完美解决_木元心的博客-CSDN博客
!如果着急解决问题,建议直接跳到【解决问题】章节

文章目录

背景

由于项目需求,在调试代码的时候发现一个由 python 版本导致的错误(Ubuntu16.04 python3.5m/pybind11/detail/internals.h:110:34: error: ‘nullptr),同事用的 python3.6 没问题,而我虚拟机上只装了 python2.7 和 python3.5,所以第一反应是安装 python3.6。顺便附一下 python3.6 安装过程(尝试用源码编译,但会报错,没深究)

安装 python3.6

Ubuntu16.04 的软件仓库(源)中 python 的最高版本就是 python3.5,所以无法直接用 apt 来安装

设置 python 优先级

设置 python 关联版本

在终端输入 python,会默认使用你设置的版本,但是如果你想在终端输入 python 时显示 2.7 的版本,输入 python3 时才是你想要的版本时,你就需要关联一下版本。有时候安装了 python3 版本,但是在终端输入 python3 时却提示
则需要进行下面操作

为 python 安装对应的 pip

如果 pip3 需要升级,但用常用方法升不了级时,可参考这篇帖子【Ubuntu16.04 升级 pip 问题】you are using pip version 8.1.1, however version 20.0.2 is available.

卸载 python3.5

言归正传,在安装了 python3.6,并且设置完优先级和关联版本后,再次编译还是报一样的问题,还是去找了 python3.5 下面的库,应该是即使装了 python3.6,但并没有创建软链接什么的造成的。当时无知,就决定卸载 python3.5,想着 3.5 也是后面才装的,系统默认安装的是 python2.7。
卸载命令

悲剧发生

然后悲剧发生了,我把终端关闭后就再也无法打开了(terminator 和 gnome-terminal 都打不开),原本在任务行添加的 terminator 和 gnome-terminal 都没了。重启虚拟机,菜单栏、任务栏都没了,就只能看到壁纸了。alt + ctrl + t 也不能打开终端,好在能进字符界面,也能通过 ssh 远程连接。

解决问题

最开始怀疑是图形界面的服务出了问题,于是决定重启 lightdm 服务试一试
事实证明问题不在这,重启服务后跟刚重启虚拟机的时候效果是一样的。
因为是卸载 python3.5 造成的,所以决定重新安装 python3.5,Ubuntu16.04 的源有包含 3.5 的版本,所以安装很简单

重新安装 Ubuntu 桌面

安装完,reboot,无效。于是决定重新安装 gnome 桌面
然后 reboot,菜单栏和任务栏回来了!但终端还是不能通过快捷键起来,双击图标也不能启动,能用的终端只有 xterm,在 xterm 端输入 gnome-terminal 报错

修改 gi 库名及安装 gi

这错误之前没见过,遂百度之,得到解决方案(这一步是需要的,虽然不一定能立马解决问题)
看的那篇帖子只说了这么解决,但没说为什么,但事实上我用这方法也并不能解决,后面才了解到为什么要这么改:
下面的 35 改成 36 表示从 py3.5 改到 py3.6,如果安装的是 3.7 就改成 37

更改 gnome-terminal 文件

接下来,需要修改 gnome-terminal 文件以及 terminator 文件(我安装了 terminator)关于 terminator,可参考这篇博客 Ubuntu 下的终端设置(分清 Terminal 与 Terminator)-Terminator 个性化主题设置

成了!

至此,两个终端都可以正常打开了,重新添加到任务栏也没问题了,用快捷键打开也 ok 了。
另外,除了重新安装了一下依赖于 python3 的软件后暂时没遇到其他后续影响。如果有后续影响,将在本篇博客下更新。

© Lazurite 2021 - 2024