古老的 Python 安装问题,更新 Python3-distils

古老的 Python 安装问题,更新 Python3-distils

我遇到过很多次这个问题,但都无法解决。我刚刚在 ubuntu 20.04 上手动编译并安装了 python 3.10,出于某种原因,我认为最新版本可能是最好的,但对于 python 来说,这是有争议的!

现在,当我尝试进行一些更新时,我会收到诸如此类的常见错误,表明系统没有找到“py_compile.py”?

Setting up python3-distutils (3.8.10-0ubuntu1~20.04) ...
/usr/bin/python3.9: can't open file '/usr/lib/python3.9/py_compile.py': [Errno 2] No such file or directory

但是当我搜索时,我的系统中有这个文件的多个副本,包括

/usr/local/lib/python3.10/py_compile.py

该文件应该放在哪里以便系统可以找到它?在 make、make install 编译阶段之前进行配置时,我是否需要为 ubuntu 指定与大多数其他 linux 系统不同的安装目录?

我甚至不会考虑使用清除或类似的东西,之前已经通过这种方式删除了整个系统的大部分内容,一切似乎都依赖于 python!谢谢。J

答案1

py_compile.py 由 Ubuntu 20.04 中的 libpython3.8-minimal 提供。打开终端并输入:

sudo apt install python3-all libpython3.8-minimal
sudo update-alternatives --config python3 # select python3.8 for auto mode
sudo apt install python3-distutils
sudo apt update
sudo apt upgrade

除了上述代码之外,您删除的 Python 版本中的符号链接也已损坏,其中一些最初是手动安装的。这些已删除的 Python 3.X 版本的损坏符号链接导致 apt(需要 python3)运行不正常。您可以按照以下说明找到这些损坏的符号链接如何找到损坏的符号链接

如果您发现任何可疑的符号链接,您可以使用symlinks包(sudo apt install symlinks)对其进行扫描并搜索任何dangling链接。悬垂链接是指链接目标当前不存在的链接,因此可以安全删除悬空链接。如果您不确定是否可以安全删除符号链接,可以通过在链接名称末尾附加 .bak 扩展名来重命名链接,这样您就可以通过从链接名称中删除 .bak 扩展名来快速恢复链接。

答案2

在 Ubuntu 20.04 中安装的最安全方法python3.10是使用死蛇 PPA

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt install python3.10

然后使用 调用它python3.10。对于python3.9,使用 安装sudo apt install python3.9


您没有描述对系统所做的所有更改(您似乎有 python3.9 和 python3.10)。

如果您没有删除默认的 python 版本(3.8),您可以使用重置默认版本update-alternatives --config python并选择 python3.8。

如果您已经用 python3.9 替换了默认版本,则必须重新安装 Ubuntu。Ubuntu 20.04 中的系统组件设计用于与 python3.8 配合使用。

相关内容