【问题标题】:No module named pkg_resources没有名为 pkg_resources 的模块
【发布时间】:2011-11-18 18:12:42
【问题描述】:

我正在将 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 时,同样的问题会发生。好问题和有用的答案
  • pip uninstall -y setuptools 然后pip install setuptools==39.1.0 在 Windows 10 上的 Anaconda 上为我工作。
  • @Ryan 在 Ubuntu 16.04 上也为我工作,谢谢您的好心先生!

标签: python django virtualenv setuptools pip


【解决方案1】:

2018 年 7 月更新

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

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

此问题可能高度依赖于您的操作系统和开发环境。如果上述方法不适合您,请参阅下面的旧版/其他答案。

说明

此错误消息是由缺少/损坏的 Python setuptools 包引起的。根据 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的任何版本,或者任何低于0.6的setuptools,你必须先卸载它。*

更多详情请参阅Installation Instructions


* 如果您已经有一个可用的distribute,将其升级到“兼容性包装器”将您切换到setuptools 会更容易。但如果事情已经坏了,不要尝试。

【讨论】:

  • 管道 curl 到本地命令总是让我害怕,但这很好用。 :) 虽然 YMMV 我已经运行 sudo python
  • 在 Cygwin 下我必须安装 python-setuptools 包。这让 easy_install 再次工作,遇到了同样的问题。然后我使用easy_install pip 让 pip 再次工作。我的问题是 Cygwin 在安装不相关的东西时在我背后将 Python 从 2.6 升级到 2.7 引起的。
  • 这是去年最好的答案……但截至 2013 年年中,distribute 已过时,setuptools 是它的继任者。我将编辑答案以更新它,但我不确定这是处理它的最佳方法,所以有人可能会恢复编辑,在这种情况下:Go here
  • 这个网址对我不起作用,但这个网址对我有用:peak.telecommunity.com/dist/ez_setup.py
  • @Cerin:如果你说出你尝试时发生的事情,这对每个人都会更有帮助。你是否使用了sudo,就像上面提到的@Nik 一样?
【解决方案2】:
sudo apt-get install --reinstall python-pkg-resources

在 Debian 中为我修复了它。似乎卸载一些 .deb 包(在我的情况下是扭曲的)破坏了 python 用来查找包的路径

【讨论】:

  • 我使用的是 Python 3,所以我必须运行 sudo apt-get install --reinstall python3-pkg-resources 并修复它。谢谢!
  • 我猜对 yapf 没有帮助,与 python3/python2 有关
【解决方案3】:

我在 ubuntu 13.10 上尝试将 rhodecode 安装到 virtualenv 时看到了这个错误。对我来说,解决方案是运行

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

在我运行 easy_install rhodecode 之前。

【讨论】:

  • pip install --upgrade setuptools 一个人就帮了我的忙。
  • 我需要pip install --upgrade setuptools --user
  • 由于同样的错误,我无法运行pip install --upgrade setuptoolsNo module named pkg_resources
  • pip install --upgrade distribute 在使用 Python 3 的 venv 模块时完成了这项工作。 Python 2 的 virtualenv 支持 --distribute 标志,但必须在 venv 创建的环境上安装 distribute
【解决方案4】:

这也发生在我身上。我认为如果requirements.txt 包含“分发”条目而virtualenv 使用setuptools,就会出现问题。 Pip 将尝试修补 setuptools 以腾出空间进行分发,但不幸的是它会中途失败。

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

使用 virtualenvwrapper 的示例:

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

【讨论】:

  • 这对我有帮助,而其他解决方案都没有(使用 Ubuntu 16.04)
  • 对于由 Python 3 的 venv 模块创建的环境,在激活环境后运行 pip install -U distribute 即可。
【解决方案5】:

在 CentOS 6 中安装包 python-setuptools 修复了它。

yum install python-setuptools

【讨论】:

  • 如果将“yum”替换为“sudo apt-get”,这在 Debian 中有效。另外:sudo apt-get install python3-setuptools
  • 这是为我做的。
  • 我在 CentOS 7 上遇到了这个问题,并且已经安装了 python-setuptools,但是 sudo yum reinstall python-setuptools 修复了它。
  • 向 CentOS.org bugs.centos.org/view.php?id=14042报告了这个错误
【解决方案6】:

在尝试了其中几个答案之后,然后联系了一位同事,在 Ubuntu 16.04 上对我有用的是:

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

在我的情况下,只是一个旧版本的枕头 3.1.1 有问题(枕头 4.x 工作正常),现在已经解决了!

【讨论】:

    【解决方案7】:

    我之前遇到过这个错误,而评分最高的答案让我在尝试下载 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
    • 这个答案通过添加“| sudo python”拯救了我,因为“| python”单独不起作用!谢谢
    【解决方案8】:

    需要更多的 sudo。然后使用easy_install安装pip。有效。

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

    【讨论】:

    • sudo 在 vi​​rtualenv 中不应该是必需的
    • 没错,我在没有 virtualenv 的情况下也遇到了同样的问题。
    【解决方案9】:

    我通过这样做修复了 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 的该目录下

    【讨论】:

    • 是的,在某些项目中,这个解决方案是最好的(对我来说)
    【解决方案10】:

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

    conda upgrade -c anaconda setuptools
    

    如果 setuptools 被删除,您需要重新安装 setuptools。

    conda install -c anaconda setuptools
    

    如果这些方法都不起作用,您可以升级 conda 环境。但我不建议您需要重新安装和卸载某些软件包,因为这会加剧这种情况。

    【讨论】:

      【解决方案11】:

      对我来说,这个错误是因为我有一个名为“site”的子目录!我不知道这是否是一个 pip 错误,但我是这样开始的:

      /some/dir/requirements.txt /一些/目录/站点/

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

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

      【讨论】:

        【解决方案12】:

        对我来说,原来是site-packages 的权限问题。因为它只是我的开发环境,所以我提高了权限,一切都恢复正常了:

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

        【讨论】:

          【解决方案13】:

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

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

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

          【讨论】:

            【解决方案14】:

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

            我的解决方案是停用虚拟环境,删除然后使用 pip 卸载虚拟环境并重新安装它。之后,我为我的项目创建了一个新的虚拟环境,然后 pip 在虚拟环境中都可以正常工作。

            【讨论】:

              【解决方案15】:

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

              要运行的命令是:

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

              【讨论】:

              • 文件 "/python/Python-3.5.1/Lib/urllib/request.py",第 162 行,在 urlopen 返回 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('unknown url type: %s' % type) urllib.error.URLError:
              【解决方案16】:

              如果您在通过conda 安装的应用程序遇到此问题,解决方案(如this bug report) 中所述,只需安装 setup-tools 即可:

              conda install setuptools
              

              【讨论】:

                【解决方案17】:

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

                pip install --upgrade setuptools --user
                

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

                【讨论】:

                  【解决方案18】:

                  显然您缺少设置工具。一些 virtualenv 版本默认使用分发而不是 setuptools。创建 virtualenv 时使用--setuptools 选项或在您的环境中设置VIRTUALENV_SETUPTOOLS=1

                  【讨论】:

                    【解决方案19】:

                    所有发布的答案都不适合我,所以我重新安装了 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/

                    【讨论】:

                    • 回溯(最近一次调用最后):文件“/usr/bin/easy_install”,第 5 行,在 from pkg_resources import load_entry_point ImportError: No module named 'pkg_resources'
                    • owner-Dimension-3000 owner # sudo easy_install pip Traceback(最近一次调用最后一次):文件“/usr/bin/easy_install”,第 5 行,在 from pkg_resources import load_entry_point ImportError: No名为“pkg_resources”的模块 owner-Dimension-3000 owner # pip install --upgrade setuptools Traceback(最近一次调用最后一次):文件“/usr/bin/pip”,第 5 行,在 from pkg_resources import load_entry_point ImportError: No名为“pkg_resources”的模块 owner-Dimension-3000 owner #
                    • 您是否首先删除了已安装的 pip 版本?
                    【解决方案20】:

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

                    virtualenv venv
                    

                    指的是卸载的python

                    什么对我有用

                    python3 -m virtualenv venv
                    

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

                    【讨论】:

                      【解决方案21】:

                      很多答案都推荐以下内容,但如果您仔细阅读该脚本的源代码,您会发现它已被弃用。

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

                      如果你的 pip 也坏了,这也不起作用。

                      pip install setuptools
                      

                      我发现我必须从 Ensure pip, setuptools, and wheel are up to date 运行命令,才能让 pip 再次工作。

                      python -m pip install --upgrade pip setuptools wheel
                      

                      【讨论】:

                      • 在基于 Arch 的 Manjaro Linux 上对我不起作用
                      【解决方案22】:

                      你可以使用命令 sudo apt-get install --reinstall python3-pkg-resources 如果您使用的是 python3 ,我就是这种情况。

                      【讨论】:

                        【解决方案23】:

                        我在尝试关注this guide for OSX 时遇到了这个答案。对我有用的是,在运行 python get-pip 之后,我还必须运行 easy_install pip。这解决了根本无法运行 pip 的问题。我确实安装了一堆旧的 macport 东西。这可能有冲突。

                        【讨论】:

                          【解决方案24】:

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

                          所以我应该先安装 setuptools(easy_install)。

                          【讨论】:

                            【解决方案25】:

                            只需通过以下方式重新安装您的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
                            

                            那么一切都会好起来的。

                            【讨论】:

                              【解决方案26】:

                              我使用的是 CentOS 6.7,而我的 python 刚刚从 2.6.6 升级到 2.7.11,在尝试了这么多不同的答案之后,最后以下一个可以完成工作:

                              sudo yum install python-devel
                              

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

                              【讨论】:

                                【解决方案27】:

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

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

                                例如:

                                ~/RepoDir/TestProject$ virtualenv TestEnvironmentDir
                                

                                【讨论】:

                                  【解决方案28】:

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

                                  【讨论】:

                                    【解决方案29】:

                                    在 Opensuse 42.1 上,以下解决了这个问题:

                                    zypper in python-Pygments
                                    

                                    【讨论】:

                                      【解决方案30】:

                                      ImportError: No module named 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 最后执行安装命令。

                                      apt-get install python-pip
                                      

                                      注意:用户必须是root。

                                      【讨论】:

                                        猜你喜欢
                                        • 2017-09-26
                                        • 2020-05-09
                                        • 2020-07-28
                                        • 1970-01-01
                                        • 2020-03-20
                                        • 2014-04-04
                                        • 2021-08-22
                                        • 1970-01-01
                                        相关资源
                                        最近更新 更多