关于python:没有名为pkg_resources的模块

No module named pkg_resources

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

1
2
3
4
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站点包上:

1
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不在这条路上的想法吗?


2018年7月更新

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

有些可能需要(重新)通过包管理器(apt-get installyum install等)安装python-setuptools包。

这个问题可能高度依赖于您的操作系统和开发人员环境。如果上述问题对您不起作用,请参阅下面的传统/其他答案。

解释

此错误消息是由缺少/损坏的python setuptools包引起的。根据Matt M.的评论和安装工具问题581,下面提到的引导脚本不再是推荐的安装方法。

引导脚本指令将保留在下面,以防对任何人仍然有帮助。

遗留答案

我今天在尝试使用pip时遇到了同样的ImportError。不知怎么地,我的Python环境中删除了setuptools包。

要解决此问题,请运行setuptools的安装脚本:

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

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

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

可能是预先准备好的sudo

如果您有任何版本的distribute或任何版本的setuptools低于0.6,则必须先卸载它。*

有关详细信息,请参阅安装说明。

*如果您已经有了一个可用的distribute,那么升级到"兼容性包装器",将您切换到setuptools就更容易了。但如果东西已经坏了,不要尝试。


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

在Debian帮我修的。似乎卸载了一些.deb包(在我的例子中是Twisted集)已经破坏了python用来查找包的路径。


我在尝试将Rhodecode安装到Ubuntu13.10上的virtualenv时看到了这个错误。对我来说,解决办法是运行

1
2
pip install --upgrade setuptools
pip install --upgrade distribute

在我运行之前,轻松安装Rhodecode。


这也发生在我身上。我认为,如果requirements.txt包含"distribute"条目,而virtualenv使用setuptools,问题就会发生。PIP将尝试修补安装工具以留出分发空间,但不幸的是,它将失败一半。

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

使用virtualenvwrapper的示例:

1
2
3
4
5
$ deactivate
$ rmvirtualenv yourenv
$ mkvirtualenv yourenv --distribute
$ workon yourenv
$ pip install -r requirements.txt


在Centos6安装包python安装工具修复了它。

1
yum install python-setuptools


我以前有过这个错误,在下载ez_setup.py文件时,最高级别的回答给了我一个错误。我找到了另一个源,这样您就可以运行命令:

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

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

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

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

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


需要一点肥皂水。然后使用易于安装来安装PIP。作品。

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


在尝试了其中的几个答案后,又联系了一位同事,在Ubuntu 16.04上为我工作的是:

1
2
pip install --force-reinstall -U setuptools
pip install --force-reinstall -U pip

在我的例子中,只有旧版本的枕头3.1.1出现问题(枕头4.x工作正常),现在解决了!


我通过执行以下操作修复了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中的目录下。


对我来说,这个错误是因为我有一个子目录"site"!我不知道这是不是一个pip错误,但我从以下开始:

/部分/dir/requirements.txt/DI/DR/站点/

pip install-r requirements.txt不起作用,这是上面的错误!

将子文件夹从"site"重命名为"src"解决了问题!也许PIP正在寻找"站点包"?疯子。


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

要运行的命令是:

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


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

我的解决方案是停用虚拟env,删除然后用pip卸载virtual env并重新安装它。在这之后,我为我的项目创建了一个新的虚拟环境,然后PIP在虚拟环境中和在正常环境中一样工作得很好。


对我来说,这是site-packages上的权限问题。因为它只是我的开发环境,所以我提高了权限,一切都重新工作了:

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

如果您在通过Conda安装的应用程序中遇到此问题,那么解决方案(如此Bug报告中所述)就是简单地安装安装工具:

1
conda install setuptools


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

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

切换回创建virtualenv的用户,然后运行最初的pip install命令没有问题。希望这有帮助!


很明显你没有安装工具。默认情况下,某些virtualenv版本使用distribute而不是setuptools。创建virtualenv时使用--setuptools选项,或在您的环境中设置VIRTUALENV_SETUPTOOLS=1


当我试图遵循OSX的指南时,我发现了这个答案。对我起作用的是,在运行python get-pip之后,我还必须运行easy_install pip。这解决了根本无法运行PIP的问题。我确实安装了一堆旧的MacPort设备。这可能有矛盾。


在Windows上,我安装了从www.lfd.uci.edu/~gohlke/pythonlibs/下载的pip,然后遇到了这个问题。

所以我应该先安装安装工具(易于安装)。


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

1
2
3
4
5
6
$ 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

那么一切都会好起来的。


没有一个张贴的答案对我有用,所以我重新安装了PIP,它工作了!

1
2
3
4
5
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/)


在我的例子中,我最初安装了两个Python版本,后来删除了旧版本。因此,在创建虚拟环境时

1
virtualenv venv

正在引用卸载的python

什么对我有用

1
python3 -m virtualenv venv

当你尝试使用pip时也是如此。


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

为了解决这个问题,我将虚拟环境重新安装到目标目录中。这清除了丢失的安装工具,并使事情再次运行。

例如。:

1
~/RepoDir/TestProject$ virtualenv TestEnvironmentDir

对我来说,一个很好的解决办法是使用--no-download选项来虚拟环境(VIRTUALENV_NO_DOWNLOAD=1 tox选项来进行毒性测试)。


在OpenSUSE 42.1上,以下内容修复了此问题:

1
zypper in python-Pygments


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

步骤:1登录根用户。

1
sudo su root

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

1
apt-get purge -y python-pip

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

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

步骤:4运行python文件。

1
python ./get-pip.py

步骤:5最终退出安装命令。

1
apt-get install python-pip

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


我在谷歌应用引擎环境中遇到了这个错误。pip install -t lib setuptools解决了这个问题。


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


当我使用易于安装的PIP for python 2.7.14时,也遇到了同样的问题。对我来说,解决方案是(也许不是最好的,但对我来说是最有效的,这可能是最简单的),包含easy-install.py的文件夹也包含pkg_resources的文件夹,我复制后将该文件夹粘贴到我的pip-script.py脚本所在的同一文件夹(python27\Scripts中)。从那以后,我在python27\Lib\site-packages\pip-9.0.1-py2.7.egg\pip\_vendor文件夹中也找到了它,修改pip-script.py文件以导入它可能是更好的解决方案。


yum -y install python-setuptools

我配置了CEPH,执行命令"$ ceph-deploy new node1"有问题,我执行命令"$ yum -y install python-setuptools",那么问题就解决了,谢谢


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

1
pip install --upgrade setuptools --user

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


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

1
sudo yum install python-devel

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