我几乎和你一样一直在寻找这个问题的答案,终于找到了解决方案。
警告,我可能搞砸了我的 python3.8 安装作为副作用,并且可能会再次卸载该软件包并尽快破坏当你运行 apt-update 时。
另外,也许可以减少命令的数量,但这是我最终做的:
运行 apt list 以查看可用软件包列表:
$ apt list -a python3-distutils
Listing... Done
python3-distutils/focal-updates,focal-updates,focal-security,focal-security,now 3.8.5-1~20.04.1 all [installed]
python3-distutils/focal,focal 3.8.2-1ubuntu1 all
python3-distutils/bionic-updates,bionic-updates 3.6.9-1~18.04 all
python3-distutils/bionic,bionic 3.6.5-3 all
然后下载“仿生”deb包,
因为它实际上包含多个版本的distutils,
对于 Python 3.6、3.7 和 3.8:
$ apt download python3-distutils/bionic
Get:1 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 python3-distutils all 3.6.9-1~18.04 [144 kB]
Fetched 144 kB in 0s (661 kB/s)
最后安装deb包:
$ sudo dpkg --install python3-distutils_3.6.9-1~18.04_all.deb
dpkg: warning: downgrading python3-distutils from 3.8.5-1~20.04.1 to 3.6.9-1~18.04
(Reading database ... 193375 files and directories currently installed.)
Preparing to unpack python3-distutils_3.6.9-1~18.04_all.deb ...
Unpacking python3-distutils (3.6.9-1~18.04) over (3.8.5-1~20.04.1) ...
Setting up python3-distutils (3.6.9-1~18.04) ...
至此,我终于可以在python3.6中使用pip了。
注 1: 以上apt list -a 的打印输出取决于您运行的是 Ubuntu 还是 Debian 发行版,以及哪个适合-repos 您已在 /etc/apt/sources.list* 中激活。
注 2: 如上面python3-distutils/bionic 的情况所示,包的名称并不总是与其内容一致。
要查看它们,您必须下载并使用dpkg -C <pafkage-file> 进行检查,或者使用apt-file list python3-distutils 从远程进行检查。
注意 3:如果您找不到特定 Python 版本的确切 distutils 版本,您可以安装较早的版本并对其进行符号链接。
例如,截至 2020 年 1 月,在 Debian-unstable("sid") 和 "bullseye" 中,它们的 apt-repos 中包含的 python3-distutils 包包含仅适用于 Python3.9 的文件,而之前来自 "buster" 的 apt-repos 包含仅适用于 Python3.7 的文件。
所以如果你想为 Python3.8 安装distutils,你必须下载“buster”包并执行:
$ sudo dpkg --unpack python3-distutils_3.7.3-1_all.deb
$ sudo rm /usr/lib/python3.8/distutils/distutils/
$ sudo ln -w /usr/lib/python3.{7,8}/distutils/distutils/