Ubuntu 升级 Python 3.6 版本到 3.8

文章目录

    由于我要使用 tmuxp 替代 tmuxinator, 其依赖的 Python 最低版本是 3.7,而我本机的 Python 版本为 3.6。
    所以,我要安装 3.8 版本,并将默认的 python3 命令指向 3.8。

    系统环境

    • Ubuntu 18.04 (Windows WSL)
    • Python 3.6.9
      > python3 --version Python 3.6.9

    Ubuntu 安装 Python 3.8

    sudo apt install python3.8
    

    将 python3.6 和 3.8 添加到 update-alternatives

    sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
    sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 2
    

    将 python3 指向 python3.8

    > 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.8   2         auto mode
      1            /usr/bin/python3.6   1         manual mode
      2            /usr/bin/python3.8   2         manual mode
    
    Press <enter> to keep the current choice[*], or type selection number:
    

    可以看到,已经默认指向了 python3.8,按回车即可。

    测试一下,可以看到指向已更新。

    > python3
    Python 3.8.0 (default, Dec  9 2021, 17:53:27)
    

    update-alternatives 的用途

    我是第一次使用 update-alternatives,没想到还有这么个命令。

    先不看命令说明文档,猜测一下,就是为了处理程序多版本共存的问题。
    例如,我写个程序,有多个版本,但是又不想每次都覆盖更新,那么就可以用 update-alternatives 来管理。

    > man update-alternatives
    update-alternatives - maintain symbolic links determining default commands
    

    ModuleNotFoundError: No module named ‘apt_pkg’

    升级之后,会发现很多命令都报这个错误,解决方法:

    cd /usr/lib/python3/dist-packages/
    sudo cp apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.so
    

    删除 python 3.8

    如果以后不需要 python 3.8,可以这样删除。

    sudo apt-get -y purge python3.8
    sudo apt-get -y autoremove
    

    参考

    • https://tech.serhatteker.com/post/2019-12/upgrade-python38-on-ubuntu/

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式