python不能随意升级会出事故的

125 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第13天,点击查看活动详情

前言

  • 一直使用的 unbuntu 18 默认 python33.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