如何安装Python Distutils。

125

我刚在一台运行Ubuntu 8.04的VPS服务器上获得了一些空间,现在正试图在其上安装Django。该服务器已经安装了Python 2.5,但我猜它的安装方式非标准。当我运行Django的安装脚本时,出现了以下错误:

amitoj@ninja:~/Django-1.2.1$ python setup.py install
Traceback (most recent call last):
  File "setup.py", line 1, in <module>
    from distutils.core import setup
ImportError: No module named distutils.core
我被难住了。所有的互联网文章都告诉我如何使用distutils安装模块。但是,我该怎么获取distutils本身呢?有人能指引我到distutils的存档中吗?我在/usr/lib/local/python2.5、/usr/lib/python2.5等地方查找过了,但像预期的那样没有找到distutils。
11个回答

256

我知道这是一个老问题,但是我在Ubuntu中使用Python 3.6时遇到了同样的问题,我能够使用以下命令解决它(在Ubuntu 18.04、20.04和22.04中有效):

sudo apt-get install python3-distutils

10
在Ubuntu 16.04中,这个软件包实际上并不存在。您可以通过此链接查看相关信息:https://packages.ubuntu.com/search?keywords=python3-distutils - Nicholi
9
在18.04上表现得非常出色。 - habitats
2
在Ubuntu 18.4中出现错误E:软件包'python3-distutils'没有安装候选项。 - Ganesh
1
和 @Ganesh 一样,“has no installation candidate” Ubuntu 16.04.6 LTS。 - hugo blanc
4
可以安装特定版本的软件。我尝试了sudo apt-get install python3.9-distutils,因为输出信息中 (…) python3-distutils 显示它虽然已将 python3 版本设置为 3.9,但已更新到版本 3.6。这样做起作用了。 - Lukas
显示剩余3条评论

30

我遇到了一个错误:处理时遇到错误: oracle-java11-installer-local E: 子进程 /usr/bin/dpkg 返回错误代码(1) - mLstudent33
但是我的 java -version 看起来没问题:java version "11.0.4" 2019-07-16 LTS Java(TM) SE Runtime Environment 18.9 (build 11.0.4+10-LTS) Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.4+10-LTS, mixed mode) - mLstudent33
python3-distutils-extra(在Ubuntu16.04上)和python3-distutils(无法在python3-distutils-extra中找到)有什么区别? - skytree
根据packages.debian.org的描述:“这个软件包(python3-distutils-extra)为Python的distutils和setuptools提供了额外的功能。”因此,似乎distutils是distutils-extra的依赖项。为什么安装distutils失败而安装distutils-extra成功,我无法说。 - Ben Amos

16

您可以通过root权限使用sudo apt-get install python3-distutils

我相信它在这里起作用了。


13
您可以安装 python-distutils 包。执行 sudo apt-get install python-distutils 命令即可。

做不到。这是一个VPS服务器,我没有sudo权限。我正在考虑安装本地Python。要么这样,要么我找到Python 2.5的distutils存档。 - Neo
3
如果您正在安装本地Python,请切换到2.6或2.7版本。它们自带了“distutils”工具包。 - Manoj Govindan
2
所有的Python自1999年起都包含了distutils。在这里,看起来像是一个愚蠢的操作系统,将标准库分成任意的python和python-devel软件包。 - merwok
1
现在它已经附加了Python版本,对我来说是:sudo apt install python3.8-distutils - Seraf

9
当你没有安装setuptools并且无法使用包管理器时,最简单的安装方法是下载ez_setup.py,然后使用相应的Python解释器运行它。即使你有多个版本的Python,这种方法也适用:只需在每个Python上运行一次ez_setup.py即可。
编辑:请注意,最近的Python 3版本已经将setuptools包含在发行版中,因此您不再需要单独安装。这里提到的脚本仅适用于旧版本的Python。

3
谢谢您的回复,但它并没有起作用。我得到了这个错误:"import _md5 ImportError: No module named _md5"。我猜基本的Python安装出了问题。我会选择本地安装。无论如何,非常感谢。 - Neo
3
这个脚本的语法似乎过时了,至少在python3.6中无法运行,所以它目前不是一个很好的解决方案。 - Jmills
1
@Jmills 从 Python 3.4 开始,已经包含了 setuptools,因此无需在最新版本上运行该脚本。这个问题是关于 Python 2 的。 - Duncan
7
@Duncan 噢,确实写着 Python2 - 因此安装 Python3.6 在 Ubuntu 16.04 可能会遇到这个错误。这就是我来到这里的原因,并且 sudo apt-get install python3-distutils 可以解决它。但你的备注澄清了版本差异。 - Jmills
2
看起来14.04、16.04都内置了它,但在18.04中,你需要安装python3-distutils。顺带一提…… - rogerdpack
对于Python3会出现错误, $ python3 ~/python_setup_tools/ez_setup.py File "/home/prashant/python_setup_tools/ez_setup.py", line 106 except pkg_resources.VersionConflict, e: ^ SyntaxError: invalid syntax 但是对于Python2可以正常运行, $ python2 ~/python_setup_tools/ez_setup.py Setuptools version 0.6c11 or greater has been installed. (Run "ez_setup.py -U setuptools" to reinstall or upgrade.) - Prashant Adlinge

9

我在使用标准的Angstrom发行版的Beaglebone Black上遇到了这个错误。目前它正在运行Python 2.7.3,但不包括distutils。对我来说解决方法是安装distutils。(需要su权限。)

    su
    opkg install python-distutils

在安装后,之前出错的命令成功运行了。

    python setup.py build

7

“模块未找到”通常意味着相关软件包未安装。

Debian已决定将distutils视为非核心Python软件包,因此它未包含在最新版本的Debian和基于Debian的操作系统中。你可以执行以下操作:

sudo apt-get install python3-distutils
sudo apt-get install python3-apt

3
如果你正在使用最新版本的Ubuntu(或者它的变种,例如Linux Mint),并且该版本自带Python 3.8,则你无法使用Python3.7的distutils,也不能通过Python3.7使用pip或pipenv。参考:如何为旧版本Python安装python-distutils
显然,使用Python3.8没有问题。

2

这个方法对我没用:sudo apt-get install python-distutils

所以,我尝试了这个:sudo apt-get install python3-distutils


0

通过搜索所有与Python-Distutils相关的软件包:

apt-cache search x

我获得了python3-distutils-extra - Python3构建系统的增强版
然后只需尝试:
sudo apt-get install python3-distutils-extra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接