首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何为旧python版本安装python-distutils

如何为旧python版本安装python-distutils
EN

Stack Overflow用户
提问于 2020-05-03 00:08:54
回答 2查看 11.4K关注 0票数 19

我正在运行Ubuntu20.04,安装了python 3.6、3.7和3.8。

我试图使用pip在3.6和3.7版本上安装一些软件包,使用'python3.7 -m pip安装包‘,但是,我得到了以下错误:

代码语言:javascript
运行
复制
ModuleNotFoundError: No module named 'distutils.util

我已经安装了python3-distutilspython3-distutils-extra,但是pip只适用于python3.8

如何使pip在python3.6和3.7上安装软件包?

EN

回答 2

Stack Overflow用户

发布于 2020-05-21 22:07:40

(来自赏金描述)

我想要一个明确的解决方案,不需要有人告诉我安装:

  • python-distutils
  • 3-二硫磷
  • Python3-distutils-额外

我将免费分发给任何提到安装这些的人。

我有个坏消息要告诉你。在没有安装这些软件包的情况下,在Debian提供的distutils包上获得python*是没有“官方”方法的,除非您在Debian的默认包存储库之外。

这是Debian决定将Python标准库的各个部分拆分为不同的包的结果,这是基于他们将事物分成运行时包和开发包的策略。他们认为distutils属于“开发”部分,因此,不要将其作为标准python包的一部分分发。

基本上,你的选择是:

  • 安装一个python*-distutils包。
    • 这是操作系统维护人员建议在您的情况下进行的操作。
    • 你还没有解释为什么你会“免费投反对票”给任何人推荐,但这确实是“最正确”的解决方案。

  • 从不破坏标准库的地方安装Python。
    • 这意味着使用除官方debian存储库之外的包源。
    • 最简单的来源将是死蛇ppa

  • 编译您自己的Python!
    • 实际上,这并不困难,而且像碧昂夫这样的工具可以方便地编译和管理多个python版本。

  • 绕过这个问题!
    • 你可以..。从CPython的repo下载源代码,并将Lib/distutils文件夹放置在pythonX.Y的导入路径上?这是一个100%的黑客,但我强烈建议不要这样做。如果发生了什么坏事,因为你做了这件事,我没有责任。

票数 4
EN

Stack Overflow用户

发布于 2020-10-09 10:21:20

我一直在寻找这个问题的答案,几乎和你一样久,终于找到了解决办法。

请注意,,我可能已经把python3.8的安装搞砸了,这是一个副作用,而且一旦您运行apt更新程序,这个软件包可能会再次卸载并中断。

此外,可能还可以减少命令的数量,但下面是我最后所做的:

运行apt list查看可用包的列表:

代码语言:javascript
运行
复制
$ 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:

代码语言:javascript
运行
复制
$ 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包:

代码语言:javascript
运行
复制
$ 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“包并执行:

代码语言:javascript
运行
复制
$ 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/
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61567990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档