我一直在寻找这个问题的答案几乎和你一样长,终于找到了解决方案。
请注意,我可能把我的 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发行版,以及您在 /etc/apt/sources.list* 中激活了哪个 apt-repos。
注2:如上例python3-distutils/bionic
所示,包的名称并不总是与其内容一致。要查看它们,您必须下载它并使用dpkg -C <pafkage-file>
或从远程使用 进行检查apt-file list python3-distutils
。
注意 3:如果您找不到特定 Python 版本的确切 distutils
版本,您可以安装较早的版本并对其进行符号链接。例如,截至 2020 年 1 月,在 Debian-unstable("sid") 和 "bullseye" 中python3-distutils
,它们的 apt-repos 中包含的包仅包含适用于 Python3.9 的文件,而之前来自 "buster" 的 apt-repos 包含适用于 Python3 的文件.7 只。所以如果你想distutils
为 Python3.8 安装,你必须下载“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/