我正在将一个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
不在路径上的任何想法?
答案 0 :(得分:579)
2018年7月更新
大多数人现在应该使用pip install setuptools
(可能使用sudo
)。
有些人可能需要(重新)通过他们的软件包管理器(python-setuptools
,apt-get install
等)安装yum install
软件包。)
此问题可能高度依赖于您的操作系统和开发环境。如果以上内容不适合您,请参阅下面的遗产/其他答案。
<强>解释强>
此错误消息是由丢失/损坏的Python setuptools
程序包引起的。 Per Matt M.的评论和setuptools issue #581,下面提到的引导脚本不再是推荐的安装方法。
引导脚本说明将保留在下方,以防它对任何人都有帮助。
遗留答案
我在尝试使用pip时遇到了同样的ImportError
。不知何故,我的Python环境中删除了setuptools
包。
要解决此问题,请运行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
的任何版本,或任何setuptools
低于0.6的版本,你必须先卸载它。*
有关详细信息,请参阅Installation Instructions。
*如果您已经有效distribute
,将其升级为“兼容包装”可以将您切换到setuptools
更加容易。但如果事情已经破裂,请不要尝试。
答案 1 :(得分:109)
sudo apt-get install --reinstall python-pkg-resources
在Debian中为我修复了它。好像卸载一些.deb软件包(在我的情况下扭曲集)已经打破了python用于查找软件包的路径
答案 2 :(得分:45)
我尝试在ubuntu 13.10上安装rhodecode到virtualenv时看到了这个错误。对我来说,解决方案是运行
pip install --upgrade setuptools
pip install --upgrade distribute
在我运行easy_install rhodecode之前。
答案 3 :(得分:33)
这也发生在我身上。我认为如果在virtualenv使用setuptools时,requirements.txt包含“distribute”条目,则会出现问题。 Pip将尝试修补setuptools以便为分发腾出空间,但不幸的是它将在中途失败。
简单的解决方案是删除当前的virtualenv,然后使用--distribute参数创建一个新的virtualenv。
使用virtualenvwrapper的一个例子:
$ deactivate
$ rmvirtualenv yourenv
$ mkvirtualenv yourenv --distribute
$ workon yourenv
$ pip install -r requirements.txt
答案 4 :(得分:16)
在CentOS 6中安装python-setuptools软件包修复了它。
yum install python-setuptools
答案 5 :(得分: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
我还创建了另一个可以从以下位置下载脚本的位置:
答案 6 :(得分:9)
在尝试了几个这样的答案之后,然后联系了一位同事,在Ubuntu 16.04上对我有用的是:
pip install --force-reinstall -U setuptools
pip install --force-reinstall -U pip
在我的情况下,它只是一个旧版本的枕头3.1.1有问题(枕头4.x工作正常),现在已经解决了!
答案 7 :(得分:7)
需要多一点sudo。然后使用easy_install来安装pip。的工作原理。
sudo wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
sudo easy_install pip
答案 8 :(得分:5)
我通过执行以下操作修复了virtualenv的错误:
从
复制pkg_resources.py /Library/Python/2.7/site-packages/setuptools
到
/Library/Python/2.7/site-packages/
这可能是一种廉价的解决方法,但它对我有用。
如果设置工具不存在,您可以尝试通过键入virtualenv --system-site-packages /DESTINATION DIRECTORY
来安装system-site-packages,将最后一部分更改为要安装到的目录。 pkg_rousources.py
将位于lib / python2.7 / site-packages
答案 9 :(得分:3)
对我来说,这个错误是因为我有一个名为“site”的子目录!我不知道这是不是一个pip bug,但我开始于:
/some/dir/requirements.txt /一些/目录/站点/
pip install -r requirements.txt不起作用,给我上面的错误!
将子文件夹从“site”重命名为“src”修复了问题!也许pip正在寻找“网站包”?疯狂。
答案 10 :(得分:2)
当我将virtualenv激活为与创建它的人不同的用户时,我遇到了这个问题。这似乎是一个许可问题。当我尝试@cwc的答案并在输出中看到这个时我发现了这个:
Installing easy_install script to /path/env/bin
error: /path/env/bin/easy_install: Permission denied
切换回创建virtualenv的用户,然后运行原始的pip install
命令没有问题。希望这有帮助!
答案 11 :(得分:2)
如果您通过conda安装了应用程序时遇到此问题,则解决方案(如this bug report)中所述,只需安装以下设置工具:
conda install setuptools
答案 12 :(得分:2)
对我来说,结果是site-packages
上的权限问题。由于它只是我的开发环境,我提升了权限,一切都恢复了工作:
sudo chmod -R a+rwx /path/to/my/venv/lib/python2.7/site-packages/
答案 13 :(得分:2)
看起来他们已经离开bitbucket并且现在在github上(https://github.com/pypa/setuptools)
要运行的命令是:
wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
答案 14 :(得分:2)
我今天也有这个问题。我只在虚拟环境中遇到问题。
我的解决方案是停用虚拟环境,删除然后用pip卸载virtualenv并重新安装它。之后我为我的项目创建了一个新的虚拟环境,然后pip在虚拟环境中和正常环境一样工作正常。
答案 15 :(得分:1)
建议使用以下答案,但是如果您仔细阅读该脚本的源代码,则会发现它已被弃用。
wget https://bootstrap.pypa.io/ez_setup.py -O - | python
如果您的点子也坏了,那么这也不起作用。
pip install setuptools
我发现我必须从Ensure pip, setuptools, and wheel are up to date运行命令,以使pip再次起作用。
python -m pip install --upgrade pip setuptools wheel
答案 16 :(得分:1)
显然你缺少setuptools。默认情况下,一些virtualenv版本使用distribute而不是setuptools。在创建virtualenv时使用--setuptools
选项或在您的环境中设置VIRTUALENV_SETUPTOOLS=1
。
答案 17 :(得分:0)
当我试图关注this guide for OSX时,我遇到了这个答案。对我有用的是,在运行python get-pip
后,我不得不easy_install pip
。这解决了根本无法运行pip的问题。我做了安装了一堆旧的macport东西。这可能有冲突。
答案 18 :(得分:0)
您可以使用命令
sudo apt-get install --reinstall python3-pkg-resources
如果您使用的是 python3 ,我就是这种情况。
答案 19 :(得分:0)
在我的系统中一切运行良好。我使用的那一刻 pip安装virtualenv 问题开始发生。可能是打破了安装文件的路径
答案 20 :(得分:0)
简单的解决方法是,您可以使用conda升级setuptools或整个环境。 (特别适用于Windows用户。)
conda upgrade -c anaconda setuptools
如果删除了setuptools,则需要再次安装setuptools。
conda install -c anaconda setuptools
如果所有这些方法均无效,则可以升级conda环境。但是我不建议您需要重新安装和卸载某些软件包,因为这样做会加剧这种情况。
答案 21 :(得分:0)
就我而言,我最初安装了2个python版本,后来又删除了较旧的版本。因此,在创建虚拟环境时
virtualenv venv
是指已卸载的python
什么对我有用
python3 -m virtualenv venv
当您尝试使用点子时也是如此。
答案 22 :(得分:0)
在Windows上,使用python 3.7,这对我有用:
pip install --upgrade setuptools --user
--user
将软件包安装在您的主目录中,该目录不需要管理员权限。
答案 23 :(得分:0)
yum -y install python-setuptools
我配置Ceph执行命令"$ ceph-deploy new node1"
有问题,
我执行命令"$ yum -y install python-setuptools"
,
然后问题就消失了。谢谢
答案 24 :(得分:0)
当我使用easy-install为python 2.7.14安装pip时遇到了同样的问题。对我来说,解决方案是(可能不是最好的,但对我有用,这可能是最简单的),包含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
文件以导入它的更好的解决方案。
答案 25 :(得分:0)
如果您使用的是Python 3,则应使用pip3而不是pip。该命令看起来像$ pip3 install requirements.txt
答案 26 :(得分:0)
我使用的是CentOS 6.7,我的python只是从2.6.6升级到2.7.11,在尝试了这么多不同的答案之后,最后一个人完成了这个工作:
sudo yum install python-devel
希望在同样的情况下帮助某人。
答案 27 :(得分:0)
我在Google App Engine环境中遇到了这个错误。 pip install -t lib setuptools
解决了问题。
答案 28 :(得分: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 Finaly exicute安装命令。
apt-get install python-pip
注意:用户必须是root。
答案 29 :(得分:0)
在Opensuse 42.1上,以下问题解决了这个问题:
zypper in python-Pygments
答案 30 :(得分:0)
对我来说,一个很好的解决方法是使用--no-download
选项来识别virtualenv(VIRTUALENV_NO_DOWNLOAD=1 tox
for tox。)
答案 31 :(得分:0)
我在更新我的Ubuntu版本后遇到了这个问题。它似乎在我的所有虚拟环境中都已经完成并删除了设置工具。
为了解决这个问题,我将虚拟环境重新安装回目标目录。这清理了缺少的设置工具,让事情再次运行。
e.g:
~/RepoDir/TestProject$ virtualenv TestEnvironmentDir
答案 32 :(得分:0)
在Windows上,我安装了从www.lfd.uci.edu/~gohlke/pythonlibs/下载的pip,然后遇到了这个问题。
所以我应该先安装setuptools(easy_install)。
答案 33 :(得分: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/)
答案 34 :(得分: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
然后一切都会好的。