原始操作记录 #

可以卸载 Ubuntu 16 自带的 Python3.5,然后安装 Python3.8,在卸载的时候会卸载一堆软件包,初步测试发现不会影响基础系统,如果没有特殊需求可以尝试此方案。

Bash
apt remove python3.5* libpython3.5*
apt autoremove
dpkg -l |grep ^rc|awk '{print $2}' |xargs dpkg -P
add-apt-repository ppa:deadsnakes/ppa
apt update
apt install python3.8 python3.8-venv python3.8-dev
wget https://bootstrap.pypa.io/get-pip.py
python3.8 get-pip.py

下载的 get-pip.py 是用来安装 pip for Python3.8 的。

如果没有“python3”命令,可以用“update-alternatives”来创建

TEXT
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
update-alternatives --install /usr/bin/pip3 pip3 /usr/local/bin/pip3.8 1

“update-alternatives”用法

YAML
update-alternatives: --install <链接> <名称> <路径> <优先级>

<链接> 是指向 /etc/alternatives/<名称> 的符号链接。
    (如 /usr/bin/pager)
<名称> 是该链接替换组的主控名。
    (如 pager)
<路径> 是候选项目标文件的位置。
    (如 /usr/bin/less)
<优先级> 是一个整数,在自动模式下,这个数字越高的选项,其优先级也就越高。

如果保留有多个Python3版本,可以用“update-alternatives”来调整版本

TEXT
update-alternatives --config python3

如果是 Ubuntu 18,只需要将卸载命令行中的3.5替换为3.6

关键理解 #

这类笔记最重要的不是把命令背下来,而是弄清楚它解决的是什么问题、依赖什么环境、执行后会改变什么。以后再次遇到类似情况时,可以先根据标题判断问题方向,再对照原始命令确认是否适合当前系统版本。

如果命令中包含具体路径、网卡名、磁盘名、进程名、IP 地址、端口号、用户名称或软件版本,实际执行时都要替换成自己环境中的真实值。不要直接照抄示例里的占位内容。

验证方法 #

验证时可以先准备一个最小示例,把输入、输出和异常情况都跑一遍。对于脚本类工具,建议先在临时目录或测试文件上执行,确认结果正确后再处理真实数据。

如果验证结果和预期不一致,建议先不要继续叠加更多修改,而是回到第一步检查环境差异。很多问题并不是命令本身错误,而是当前系统版本、软件版本、路径名称或权限条件与原记录不一致。

注意事项 #

涉及文件批量处理、系统命令调用、进程池线程池或第三方包时,要特别注意异常处理和边界条件,避免脚本中途失败后留下半成品数据。

对于旧文章中的命令,还要考虑软件版本变化。浏览器 flags、Linux 发行版默认配置、Python 包版本、Windows 系统设置都会随着时间调整。再次使用时,最好把这篇记录当成排查思路,而不是绝对固定的唯一答案。

小结 #

这篇记录可以作为一个快速索引:先看标题确认问题类型,再看原始命令找到核心操作,最后结合验证方法确认是否真正生效。这样既保留了早期备忘的简洁性,也能减少以后重复排查的时间。