Ubuntu升级后Python软链接失效的根本原因是系统自22.04起不再自动维护/usr/bin/python3软链接,需手动用绝对路径重建(如sudo ln -sf /usr/bin/python3.11 /usr/bin/python3),并验证/usr/bin/python3 --version;若仍报apt_pkg错误,则需同步修复ABI匹配的模块软链接。

Ubuntu 升级后 Python 软链接失效,根本原因不是链接“坏了”,而是系统默认不再自动维护 /usr/bin/python3 这个软链接——它被有意移除了。你看到的“命令未找到”或“ModuleNotFoundError: No module named 'apt_pkg'”,其实是两个不同层级的问题,但都指向同一个动作:手动重建正确的软链接。
为什么 /usr/bin/python3 突然没了
从 Ubuntu 22.04 开始,官方弃用了由 python3 包自动创建 /usr/bin/python3 软链接的行为。升级后,/usr/bin/python3.11(或类似)仍存在,但 /usr/bin/python3 这个通用入口被删了。很多工具(如宝塔、add-apt-repository、GNOME Terminal 启动脚本)硬编码依赖这个路径,一找就崩。
- 执行
ls -l /usr/bin/python3,大概率返回 “No such file or directory” - 但
ls /usr/bin/python3*通常能列出/usr/bin/python3.11或/usr/bin/python3.10 -
which python3也会失败,而which python3.11成功
怎么重建 /usr/bin/python3 软链接
必须用绝对路径 + 强制覆盖,否则会生成相对路径坏链:
- 先确认真实解释器路径:
ls /usr/bin/python3*,挑一个带版本号的(比如python3.11) - 执行:
sudo ln -sf /usr/bin/python3.11 /usr/bin/python3 - 验证:
/usr/bin/python3 --version必须输出版本号,不能报错 - 别用
ln -s python3.11 /usr/bin/python3—— 缺少/usr/bin/前缀会导致链接指向当前目录,立刻失效
为什么修复后还报 apt_pkg 错误
重建 python3 链接只解决了“命令找不到”,没解决模块 ABI 不匹配。Python 解释器升级后,apt_pkg 模块的 so 文件名(如 apt_pkg.cpython-310-x86_64-linux-gnu.so)和当前 Python 的 ABI 标签(如 cpython-311)对不上,所以 import apt_pkg 仍失败。
- 查已安装的 so 文件:
ls /usr/lib/python3/dist-packages/apt_pkg*.so - 如果只有
apt_pkg.cpython-310-*.so,但你用的是python3.11,就得建软链接:sudo ln -sf apt_pkg.cpython-310-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/apt_pkg.so - 注意:文件名必须完全一致,包括大小写、下划线、连字符;末尾必须是
.so,不能漏 - 验证:
python3 -c "import apt_pkg; print('OK')"
修复后仍启动失败?检查 systemd 服务里的硬编码路径
有些软件(如宝塔面板)的 bt.service 文件里,ExecStart= 行直接写了 /usr/bin/python3.9 或 /usr/bin/python3.11,绕过了你刚建的 /usr/bin/python3 链接。这种情况下,即使全局链接修好了,服务照样崩。
- 查真实调用路径:
sudo systemctl cat bt | grep ExecStart - 如果发现路径是具体版本(非
/usr/bin/python3),编辑服务文件:sudo systemctl edit --full bt - 把所有
/usr/bin/python3.x替换成/usr/bin/python3 - 重载并重启:
sudo systemctl daemon-reload && sudo systemctl restart bt
最易忽略的一点:软链接本身不校验目标是否存在,ln -sf 执行成功不代表它真能用。每次建完,必须用完整路径加 --version 或 -c "import xxx" 实际触发一次加载,否则问题只是被掩盖了。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











