没有名为pkg_resources的模块


451

我正在将Django应用程序部署到开发服务器,并且在运行时遇到此错误pip install -r requirements.txt

Traceback (most recent call last):
  File "/var/www/mydir/virtualenvs/dev/bin/pip", line 5, in <module>
    from pkg_resources import load_entry_point
ImportError: No module named pkg_resources

pkg_resources似乎与一起分发setuptools。最初,我认为可能不会将它安装到virtualenv中的Python,所以我setuptools 2.6使用以下命令将了(与Python相同的版本)安装到virtualenv 中的Python站点软件包中:

sh setuptools-0.6c11-py2.6.egg --install-dir /var/www/mydir/virtualenvs/dev/lib/python2.6/site-packages

编辑:这只发生在virtualenv内部。如果我在virtualenv之外打开控制台,则pkg_resources存在,但仍然出现相同的错误。

关于为什么pkg_resources不在路上的任何想法?


安装nltk时,会发生相同的问题。好问题和有帮助的答案
laike9m 2013年

4
pip uninstall -y setuptools然后pip install setuptools==39.1.0在Windows 10上的Anaconda上为我工作。–
Ryan

1
@Ryan也为我在Ubuntu 16.04上工作,谢谢您!
ElectRocnic

Answers:


634

2018年7月更新

现在大多数人都应该使用pip install setuptools(可能与一起使用sudo)。

有些人可能需要(重新)安装python-setuptools通过他们的软件包管理的软件包(apt-get installyum install,等)。

此问题可能高度取决于您的操作系统和开发环境。如果上述方法不适用于您,请参见下面的旧式/其他答案。

说明

此错误消息是由缺少/损坏的Python setuptools软件包引起的。根据Matt M.的注释和setuptools问题#581,以下引用的引导脚本不再是推荐的安装方法。

如果仍然对任何人有帮助,引导脚本说明将保留在下面。

旧版答案

ImportError今天在尝试使用点子时遇到了同样的问题。不知何故,该setuptools软件包已在我的Python环境中删除。

要解决此问题,请运行以下安装脚本setuptools

wget https://bootstrap.pypa.io/ez_setup.py -O - | python

(或者,如果您尚未wget安装(例如OS X),请尝试

curl https://bootstrap.pypa.io/ez_setup.py | python

可能带有sudo前缀。)

如果您使用的任何版本distribute,或setuptools0.6以下的版本,则必须先将其卸载。*

有关更多详细信息,请参见安装说明


*如果您已经可以使用distribute,则将其升级到“兼容性包装器” setuptools可以更轻松地进行切换。但是,如果事情已经坏了,请不要尝试。


42
用弯管卷曲到本地命令总是使我感到恐惧,但这很好。:)我已经sudo python通过YMMV。
Nik Reiman

4
在Cygwin下,我必须安装python-setuptools软件包。这又使easy_install再次工作,遇到了同样的问题。然后我曾经easy_install pip让点子再次工作。我的问题是由于Cygwin在安装无关的东西时将Python从2.6升级到2.7引起的。
Steve Pitchers 2013年

5
去年,这是最好的答案……但截至2013年年中,distribute它已经过时,并且setuptools是其继任者。我将编辑答案以更新它,但是我不确定这是处理它的最佳方法,因此有人可能会撤消编辑,在这种情况下:转到此处
abarnert

1
这个网址对我不起作用,但是这个网址对我有用
ajtrichards 2014年

1
@Cerin:如果您说尝试时发生了什么,对每个人都会有更大的帮助。您是否使用sudo过@Nik上面提到的内容?
2014年

124
sudo apt-get install --reinstall python-pkg-resources

在Debian中为我修复了该问题。似乎卸载某些.deb软件包(在我的情况下为扭曲集)已破坏python用于查找软件包的路径


9
我使用的是Python 3,因此我不得不运行sudo apt-get install --reinstall python3-pkg-resources并对其进行了修复。谢谢!
罗伯特·汤利

我猜并没有帮助yapf,这与python3 / python2有关
不要

53

尝试在Ubuntu 13.10上将rhodecode安装到virtualenv时,我已经看到此错误。对我来说,解决方案是运行

pip install --upgrade setuptools
pip install --upgrade distribute 

在运行easy_install rhodecode之前。


12
pip install --upgrade setuptools一个人为我做的把戏。
瑞安·塔克

我需要pip install --upgrade setuptools --user
dfrankow '16

5
pip install --upgrade setuptools由于相同的错误,我无法运行:No module named pkg_resources
McLawrence

1
pip install --upgrade distribute在使用Python 3的venv模块时做了工作。Python 2的virtualenv受支持的--distribute标志,但是必须将其安装distribute在由创建的环境中venv
Nirmal

34

这也发生在我身上。我认为,在virtualenv使用setuptools的情况下,如果requirements.txt包含“ distribute”条目,则会出现此问题。Pip将尝试修补setuptools以便为分发腾出空间,但不幸的是,它将失败一半。

一种简单的解决方案是删除当前的virtualenv,然后使用--distribute参数创建一个新的virtualenv。

如果使用virtualenvwrapper的示例:

$ deactivate
$ rmvirtualenv yourenv
$ mkvirtualenv yourenv --distribute
$ workon yourenv
$ pip install -r requirements.txt

2
当其他解决方案都没有使用(使用Ubuntu 16.04)时,这对我有所帮助
MIkee

对于由Python 3的venv模块创建的环境,pip install -U distribute激活环境后运行即可。
Nirmal

17

在CentOS 6中,安装软件包python-setuptools对其进行了修复。

yum install python-setuptools

如果将“ yum”替换为“ sudo apt-get”,则在Debian中有效。另外: sudo apt-get install python3-setuptools
gridtrak '16

这是为我做到的。
陶星弓

我在CentOS 7上遇到了这个问题,并且已经安装了python-setuptools,但已将sudo yum reinstall python-setuptools其修复。
锥杀手

将错误报告给CentOS.org bugs.centos.org/view.php?id=14042
rjt

14

我之前有这个错误,评分最高的答案给我一个错误,试图下载ez_setup.py文件。我找到了另一个来源,因此您可以运行以下命令:

curl http://peak.telecommunity.com/dist/ez_setup.py | python

我发现还必须使用sudo它才能使其正常工作,因此您可能需要运行:

sudo curl http://peak.telecommunity.com/dist/ez_setup.py | sudo python

我还创建了另一个位置,可以从以下位置下载脚本:

https://gist.github.com/ajtrichards/42e73562a89edb1039f3


“ curl”命令不需要sudo,因此可能是:curl http://peak.telecommunity.com/dist/ez_setup.py | sudo python
tombrown52 '16

1
这个答案用“ | sudo python”附加项救了我,因为单独使用“ | python”无效!谢谢
patti_jane

14

在尝试了以下几个答案之后,与一位同事联系,在Ubuntu 16.04上为我工作的是:

pip install --force-reinstall -U setuptools
pip install --force-reinstall -U pip

就我而言,只有枕头3.1.1的旧版本有问题(枕头4.x正常工作),现在已解决!


8

需要更多的须藤。然后使用easy_install安装pip。作品。

sudo wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
sudo easy_install pip

1
sudo在virtualenv中
不需要-igniteflow

没错,我只是在没有virtualenv的情况下遇到了同样的问题。
Tarion

5

我通过执行以下操作修复了virtualenv的错误:

从复制了pkg_resources.py

/Library/Python/2.7/site-packages/setuptools

/Library/Python/2.7/site-packages/

这可能是一个便宜的解决方法,但对我有用。

如果不存在安装工具,则可以通过键入尝试安装系统站点软件包virtualenv --system-site-packages /DESTINATION DIRECTORY,将最后一部分更改为要安装到的目录。pkg_rousources.py将在lib / python2.7 / site-packages中的该目录下


是在一些项目中,这个解决方案是最好的(对我来说)

3

对我来说,导致此错误是因为我有一个名为“ site”的子目录!我不知道这是否是pip错误,但我从以下内容开始:

/some/dir/requirements.txt / some / dir / site /

pip install -r requirements.txt无法正常工作,出现上述错误!

将子文件夹从“ site”重命名为“ src”解决了该问题!也许pip正在寻找“网站包装”?疯。


2

当我将我的virtualenv激活为不同于创建它的用户时,我遇到了这个问题。看来是权限问题。我在尝试@cwc的答案时发现了这一点,并在输出中看到了这一点:

Installing easy_install script to /path/env/bin
error: /path/env/bin/easy_install: Permission denied

切换回创建virtualenv的用户,然后运行原始pip install命令没有任何问题。希望这可以帮助!


2

我今天也有这个问题。我只在虚拟环境中遇到问题。

对我来说,解决方案是停用虚拟环境,删除后再使用pip卸载virtualenv并重新安装。之后,我为我的项目创建了一个新的虚拟环境,然后pip在虚拟环境中都能正常工作,就像在正常环境中一样。


2

看起来他们已经离开了bitbucket,现在在github(https://github.com/pypa/setuptools)上

运行的命令是:

wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python

urlopen中的文件“ /python/Python-3.5.1/Lib/urllib/request.py”,第162行return opener.open(url,data,timeout)文件“ /python/Python-3.5.1/Lib/urllib /request.py”,第465行,在打开的文件“ /python/Python-3.5.1/Lib/urllib/request.py”,第488行,在_open'unknown_open'中,req)文件“ /python/Python-3.5 .1 / Lib / urllib / request.py“,第443行,位于_call_chain结果= func(* args)文件“ /python/Python-3.5.1/Lib/urllib/request.py”,第1310行,在unknown_open中引发URLError('未知的URL类型:%s'%类型)urllib.error.URLError:<URLopen错误未知的URL类型:https>
JDOaktown

2

对我来说,原来是上的权限问题site-packages。由于这只是我的开发环境,因此我提出了权限,然后一切又重新开始了:

sudo chmod -R a+rwx /path/to/my/venv/lib/python2.7/site-packages/


2

在Windows上,使用python 3.7,这对我有用:

pip install --upgrade setuptools --user

--user 将软件包安装在您的主目录中,该目录不需要管理员权限。


2

简单的解决方法是您可以使用conda升级setuptools或整个环境。(特别适用于Windows用户。)

conda upgrade -c anaconda setuptools

如果删除了setuptools,则需要再次安装setuptools。

conda install -c anaconda setuptools

如果所有方法均无效,则可以升级conda环境。但是我不建议您需要重新安装和卸载某些软件包,因为这样做会加剧这种情况。


1

显然您缺少setuptools。某些virtualenv版本默认情况下使用分发而不是setuptools。--setuptools在创建virtualenv时使用该选项,或者VIRTUALENV_SETUPTOOLS=1在您的环境中设置。


1

就我而言,我最初安装了2个python版本,后来又删除了较旧的版本。因此,在创建虚拟环境时

virtualenv venv

指的是卸载的python

什么对我有用

python3 -m virtualenv venv

当您尝试使用点子时也是如此。


0

当我尝试遵循本OSX指南时,遇到了这个答案。对我python get-pip有用的是,跑步后,我还必须easy_install pip。这解决了根本无法运行点子的问题。我确实安装了一堆旧的Macport东西。那可能有冲突。



0

只需setuptools通过以下方式重新安装您的:

$ sudo wget https://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz#md5=7df2a529a074f613b509fb44feefefe74e
$ tar -zxvf setuptools-0.6c11.tar.gz
$ cd setuptools-0.6c11/
$ sudo python setup.py build
$ sudo python setup.py install
$ sudo pip install --upgrade setuptools

那么一切都会好起来的。


0

我使用CentOS 6.7,而我的python刚刚从2.6.6升级到2.7.11,在尝试了许多不同的答案之后,终于有以下一个工作了:

sudo yum install python-devel

希望能帮助同样情况的人。


0

没有一个发布的答案对我有用,所以我重新安装了pip并成功了!

sudo apt-get install python-setuptools python-dev build-essential 

sudo easy_install pip 

pip install --upgrade setuptools

(参考:http//www.saltycrane.com/blog/2010/02/how-install-pip-ubuntu/


追溯(最近一次调用):pkg_resources中<module>中文件“ / usr / bin / easy_install”,第5行import load_entry_point ImportError:没有名为“ pkg_resources”的模块
JDOaktown

owner-Dimension-3000 owner#sudo easy_install pip追溯(最近一次调用):pkg_resources中<module>中文件“ / usr / bin / easy_install”,第5行import load_entry_point ImportError:没有名为“ pkg_resources”的模块-3000所有者#pip install --upgrade setuptools追溯(最近一次调用):pkg_resources中<module>中文件“ / usr / bin / pip”,第5行import load_entry_point ImportError:没有名为“ pkg_resources”的模块-3000所有者#
JDOaktown

您是否首先删除了已安装的pip版本?
user13107

0

更新我的Ubuntu版本后,我遇到了这个问题。它似乎已经遍历并删除了我所有虚拟环境中的设置工具。

为了解决这个问题,我将虚拟环境重新安装回了目标目录。这清理了缺少的设置工具,并使一切重新运行。

例如:

~/RepoDir/TestProject$ virtualenv TestEnvironmentDir

0

对我来说,一个很好的解决方法是使用--no-download选项virtualenv(VIRTUALENV_NO_DOWNLOAD=1 tox用于tox。)


0

在Opensuse 42.1上,以下内容解决了此问题:

zypper in python-Pygments

0

ImportError:没有名为pkg_resources的模块:解决方法是使用下面的命令重新安装python pip。

步骤:1登录到root用户。

sudo su root

步骤:2卸载python-pip软件包(如果存在)。

apt-get purge -y python-pip

步骤:3使用wget命令下载文件(在中下载文件pwd

wget https://bootstrap.pypa.io/get-pip.py

步骤:4运行python文件。

python ./get-pip.py

步骤:5 Finalic exicute安装命令。

apt-get install python-pip

注意:用户必须是root用户。


0

我在Google App Engine环境中遇到了该错误。并pip install -t lib setuptools解决了问题。


0

如果您使用的是Python 3,则应使用pip3而不是pip。该命令看起来像$ pip3 install requirements.txt

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.