持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第13天,点击查看活动详情
前言
- 一直使用的
unbuntu 18默认python3是3.6.9的,在安装neovim的时候要求最低python3.7,所以没办法只能升级默认的 python3 了。unbuntu居然默认python3而 没有python
升级
- 我尝试过网络上修改
/usr/lib/apt_pkgXXXX这种方式,先说结论:是可行的。但是总是偶尔弹跳出系统异常是否报告这个窗口。截止目前并未因该弹窗导致python3 使用异常。但我仍想去掉弹窗所以选择另外一种优雅的方式。
apt安装python3.8
sudo apt-get install python3.8
设置3.8优先级
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
- 上面表示python3.8 是python3 第一优先级选择。我们也可以设置 python3.8为默认python3选择 。 下面的操作选择性操作。
sudo update-alternatives --config python3
3.8安装pip3&pip
- 与手动新增apt_pkg相比这种方式最为优雅,也最为舒服
sudo apt-get install python3-pip
sudo pip3 install --upgrade pip
查看
-
只需要执行上面三步即可完成python3的升级。
-
但是除了python3 正常其他版本python 都报错了。
-
我的解决也很粗暴,直接
sudo apt-get install python完事。
问题
-
python3 是升级好了,但是我发现在系统上执行命令如果报错则会提示
No module named 'apt_pkg' -
提示很明确,我们缺少
apt_pkg模块。这里主要是因为/usr/bin/apt-add-repository这个文件报错的。我们看看这个文件内容 -
果然还是因为我们升级
python3的问题。
-
在
/usr/lib/python3/dist-packages下还是遗留的默认版本的so文件。 -
而因为我们升级了
python3所以新版本的找不到对应的so文件,故而报错。其中so文件名的36m中36就是之前python3.6.9对应的版本号,所以我们只需要复制一个名叫38即可
sudo cp /usr/lib/python3/dist-packages/apt_pkg.cpython-36m-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/apt_pkg.cpython-38m-x86_64-linux-gnu.so
sudo cp /usr/lib/python3/dist-packages/apt_pkg.cpython-36m-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/apt_pkg.so