我正在运行Ubuntu20.04,安装了python 3.6、3.7和3.8。
我试图使用pip在3.6和3.7版本上安装一些软件包,使用'python3.7 -m pip安装包‘,但是,我得到了以下错误:
ModuleNotFoundError: No module named 'distutils.util
我已经安装了python3-distutils
和python3-distutils-extra
,但是pip只适用于python3.8。
如何使pip在python3.6和3.7上安装软件包?
发布于 2020-05-21 22:07:40
(来自赏金描述)
我想要一个明确的解决方案,不需要有人告诉我安装:
我将免费分发给任何提到安装这些的人。
我有个坏消息要告诉你。在没有安装这些软件包的情况下,在Debian提供的distutils
包上获得python*
是没有“官方”方法的,除非您在Debian的默认包存储库之外。
这是Debian决定将Python标准库的各个部分拆分为不同的包的结果,这是基于他们将事物分成运行时包和开发包的策略。他们认为distutils属于“开发”部分,因此,不要将其作为标准python
包的一部分分发。
基本上,你的选择是:
python*-distutils
包。
Lib/distutils
文件夹放置在pythonX.Y
的导入路径上?这是一个100%的黑客,但我强烈建议不要这样做。如果发生了什么坏事,因为你做了这件事,我没有责任。
发布于 2020-10-09 10:21:20
我一直在寻找这个问题的答案,几乎和你一样久,终于找到了解决办法。
请注意,,我可能已经把python3.8的安装搞砸了,这是一个副作用,而且一旦您运行apt更新程序,这个软件包可能会再次卸载并中断。
此外,可能还可以减少命令的数量,但下面是我最后所做的:
运行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
,用于Pythons3.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) ...
在这一点上,我终于能够使用pip与python3.6。
备注-1:上面的
apt list -a
输出取决于您是运行Ubuntu还是Debian发行版,以及您在/etc/apt/*中激活了哪些apt-repos。备注-2:,如在python3-distutils/bionic
的例子中所看到的,包的名称并不总是与其内容一致。要查看它们,您必须下载它并使用dpkg -C <pafkage-file>
检查它,或者使用apt-file list python3-distutils
从远程查看它。备注-3:如果您无法找到特定distutils
发行版的确切distutils
版本,您可以安装一个更早的版本和它的符号链接。例如,在Debian-不稳定(“sid”)和“斗牛眼”(截至2020年1月)中,它们的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/
https://stackoverflow.com/questions/61567990
复制相似问题