Python 3:导入错误 "No Module named Setuptools"

434

我在安装Python 3的软件包时遇到了问题。

我一直是用setup.py install来安装软件包的。但是现在,当我尝试安装ansicolors包时,出现以下错误:

importerror "No Module named Setuptools"

因为过去我没有安装setuptools,所以我不知道该怎么做。但是,我仍然可以通过 setup.py install 安装许多包而不需要setuptools。那么,为什么现在我需要安装setuptools呢?

我甚至不能安装setuptools,因为我使用的是Python 3.3版本,而setuptools不支持Python 3。

为什么我的安装命令不再起作用了呢?

24个回答

713

你的 setup.py 文件需要 setuptools。一些Python包曾经使用 distutils 进行发布,但现在大多数都使用更完整的包 setuptools这里有一个关于它们之间差异的问题。

在Debian上安装 setuptools

sudo apt-get install python3-setuptools

对于 Python 的旧版本(Python 2.x):

sudo apt-get install python-setuptools

1
感谢这篇文章,对我帮助很大。许多人建议使用setuptools,但在py3.3中无法安装。distribute的效果非常好。 - tomdelahaba
26
为使其正常工作,我不得不使用“Python3”进行安装:sudo apt-get install python3-setuptools - D.Steinel
11
在Ubuntu 18.04中,由于某种原因,安装apt-get install python3-setuptools无法正常工作。 - loretoparisi
4
我使用了 pip3 install setuptools 命令。 - egelev
1
对于Alpine Linux来说,它是py3-setuptools - akostadinov
显示剩余4条评论

188

编辑:官方setuptools dox页面

If you have Python 2 >=2.7.9 or Python 3 >=3.4 installed from python.org, you will already have pip and setuptools, but will need to upgrade to the latest version:

On Linux or OS X:

pip install -U pip setuptools 

On Windows:

python -m pip install -U pip setuptools
因此,与Distribute相关的此帖子的其余部分已过时(例如,某些链接无效)。

编辑2022-02-04

从Python 3.10开始Distutils已被弃用,并将在Python 3.12中删除 - 使用setuptools

整个distutils包已被弃用,将在Python 3.12中删除。它的功能 用于指定包构建已完全由第三方软件包setuptools和packaging替换...

Distribute (已弃用)

Distribute - 是一个setuptools分支,提供“Python 3支持”。distribute(setuptools)+ pip的安装说明:

curl -O http://python-distribute.org/distribute_setup.py
python distribute_setup.py
easy_install pip

以下是需要翻译的内容:

类似的问题在这里

更新:Distribute似乎已经过时,即已合并到Setuptools中:Distribute是Setuptools项目的一个弃用的分支。自Setuptools 0.7发布以来,Setuptools和Distribute已经合并,Distribute不再维护。所有持续的努力都应该参考Setuptools项目和Setuptools文档。

您可以尝试使用在setuptools pypi页面上找到的说明(很抱歉我没有测试过这个):

wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py -O - | python
easy_install pip

2
非常感谢,我不确定这是如何解决我的问题的,但它立刻就解决了! 我一直在尝试安装distribute时遇到了严重的问题。 这必须以某种方式强制安装,因为“sudo pip install distribute”无法正常工作。 我的问题已在http://stackoverflow.com/questions/16846742/issue-with-python-path-importerror-no-module-named-setuptools?noredirect=1#comment24295110_16846742中有记录。 - Deepend
2
这个可以跨平台使用(Win),而被接受的答案不适用。谢谢! - fundead
1
URL已失效,请您检查一下? - mebada
这对我有用,而被接受的答案在安装某些包后导致 Python 分发出现问题。 - frainfreeze

63

确保你正在运行最新版本的pip

我尝试安装Ansible,但失败了,并显示如下错误:

ModuleNotFoundError: No module named 'setuptools_rust'

python3-setuptools 已经安装好了,所以升级 pip 解决了问题。

pip3 install -U pip

2
仅通过使用“pip3 install -U pip”升级pip就解决了这个问题。谢谢伙计! - justudin
在所有的解决方案中,这是唯一有效的一个。 - Silas Hansen

39
我正在使用Python 2.6在Oracle Linux 6.4上的virtualenv内执行此操作,因此基于apt的解决方案对我来说不可行,Python 2.7的想法也不适用。我的解决方法是升级virtualenv安装的setuptools版本:
pip install --upgrade setuptools

安装完成后,我可以在虚拟环境中安装软件包。

2
注意,它出现了问题“无法从不存在的文件中删除条目...”将--ignore-installed添加到上面的命令中可以解决这个问题。 - Kiki Jewell

35

对我有效的解决方法是升级我的setuptools:

python3 -m pip install --upgrade pip setuptools wheel

32

对于其他因不同原因出现此问题的人:即使 setuptools 可用,当在与 setup.py 同一目录中存在 pyproject.toml 时,也会出现此情况。

删除 pyproject.toml 对我解决了此问题。


5
这简直解决了我生命中的所有问题。可以确认这个方法有效。谢谢 Jan! - Kalob Taulien
因为pip将pyproject.toml(以及setup.py和其他文件)视为项目配置位置。 - ColCh
1
我在处理的项目中同时拥有两个配置文件并没有任何问题,升级pip和安装setuptools就足够了。 - m-dz
非常感谢!我一直在为调试这个问题而苦恼。Python很棒,但打包让我想尖叫。 - 1110101001

16

pip uninstall setuptools

然后:

pip install setuptools

这对我有用并解决了我的问题。


这对我有用!我的setuptools版本较旧,是28.8版。卸载并重新安装后,它被强制更新到48版。然后一切都正常了。 - jlee88my
在我的情况下,由于某种原因安装了两个不同版本的 setuptools。当我尝试使用 pip uninstall 时发现了这一点。 - Safwan
pip install --upgrade setuptools 也可以解决这个问题 - Gonza Piotti
这能够正常工作是因为它安装了一个较新的setuptools版本。 - Bashir Abdelwahed

13
当在与setup.py同一目录下存在pyproject.toml文件时,它可能是问题的原因。我重命名了那个文件,但没有解决问题,所以我恢复了原始文件名,并做了以下更改。

在[build-system]部分下,我将“setuptools”添加到requires列表中,然后它就可以工作了。


这对我有用 - 我曾经非常苦恼。谢谢你。 - Peter Gaultney

13

第一步 #1
您需要安装 setuptools

在Linux上:

pip install -U pip setuptools

在Mac OS上:

pip install -U pip setuptools

在Windows上:

python -m pip install -U pip setuptools

第二步 #2

确保已经使其可用(将其添加到环境变量中)

在Linux上:

export PATH="INSTALLATIONDIRECTORY:$PATH"

在Mac OS上:

对不起,我不知道。

在Windows上:

  1. 打开“开始搜索”,键入“env”并选择“编辑系统环境变量”
  2. 点击“环境变量”按钮。
  3. 根据需要设置环境变量。新建按钮会添加一个额外的变量。
  4. 通过选择“确定”关闭所有对话框。您的更改已保存!

8
这是我的问题是如何解决的 => pip3 install setuptools-rust 如果您想检查您的列表 => pip3 list 我在尝试安装elastalert2时遇到了这个问题
系统信息
CentOS Linux发行版7.9.2009 (核心)
Python 3.6.8
从 /usr/local/lib/python3.6/site-packages/pip (python 3.6) 安装了 pip 21.3.1

1
这正是解决方案。我转换到了torch_mps,为了安装transformer,需要使用rust来编译tokenizer - Lei Zhang
很高兴听到它正在工作 :) - Musab Dogan

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