【问题标题】:pip fails with AttributeError: 'module' object has no attribute 'wraps'pip 因 AttributeError 失败:“模块”对象没有属性“包装”
【发布时间】:2015-05-16 07:52:22
【问题描述】:

我在 Fedora 上。我最近将我的系统从 F20 升级到了 F21。 Pip 在 F20 上运行良好,但在升级到 F21 之后肯定出了问题。 pip 停止工作,每次我输入命令pip <anything> 都会出现以下错误:

Traceback (most recent call last):
  File "/usr/bin/pip", line 7, in <module>
    from pip import main
  File "/usr/lib/python2.7/site-packages/pip/__init__.py", line 12, in <module>
    from pip.commands import commands, get_summaries, get_similar_commands
  File "/usr/lib/python2.7/site-packages/pip/commands/__init__.py", line 6, in <module>
    from pip.commands.bundle import BundleCommand
  File "/usr/lib/python2.7/site-packages/pip/commands/bundle.py", line 6, in <module>
    from pip.commands.install import InstallCommand
  File "/usr/lib/python2.7/site-packages/pip/commands/install.py", line 5, in <module>
    from pip.req import InstallRequirement, RequirementSet, parse_requirements
  File "/usr/lib/python2.7/site-packages/pip/req/__init__.py", line 3, in <module>
    from .req_install import InstallRequirement
  File "/usr/lib/python2.7/site-packages/pip/req/req_install.py", line 31, in <module>
    from pip.utils import (
  File "/usr/lib/python2.7/site-packages/pip/utils/__init__.py", line 59, in <module>
    def rmtree(dir, ignore_errors=False):
  File "/usr/lib/python2.7/site-packages/pip/_vendor/retrying.py", line 47, in wrap
    @six.wraps(f)
AttributeError: 'module' object has no attribute 'wraps'

【问题讨论】:

  • 你有两个版本的六个吗?
  • 我不确定。如果没有pip list,我该如何检查?
  • pip show six,你试过pip install -U six吗?
  • pip 似乎不起作用。任何与 pip 相关的命令都会显示上述错误。
  • 抱歉,您尝试过重新安装 pip 吗? bootstrap.pypa.io/get-pip.py

标签: python python-2.7 pip fedora-21


【解决方案1】:

如果您重新创建一个包含 不同 pip 版本的虚拟环境,您可能会遇到这样的情况:

# virtualenv /tmp/env
New python executable in /tmp/env/bin/python
Installing setuptools, pip...done.

# /tmp/env/bin/pip install --upgrade pip
(...)
Found existing installation: pip 1.5.6
  Uninstalling pip:
    Successfully uninstalled pip
Successfully installed pip

# virtualenv /tmp/env
New python executable in /tmp/env/bin/python
Installing setuptools, pip...done.

# /tmp/env/bin/pip install --upgrade pip
(...)
AttributeError: 'module' object has no attribute 'wraps'

环境现在包含之前安装的 pip 片段。要解决这个问题,您可以使用 --clean 选项:

# virtualenv --clear /tmp/env
Deleting tree /tmp/env/lib/python2.7
Not deleting /tmp/env/bin
New python executable in /tmp/env/bin/python
Installing setuptools, pip...done.

然后virtualenv会在安装新环境之前清除路径。

如果您想要更新行为,如果(例如)bin/python)存在,您可以跳过 virtualenv。

# [ ! -x /tmp/env/bin/python ] && virtualenv /tmp/env

【讨论】:

    【解决方案2】:

    使用 easy_install 安装先前版本的 pip

    easy_install pip==7.0.2
    

    然后使用 pip 安装你之前下载的版本,在我的例子中是 9.0.1

    pip install pip==9.0.1
    

    【讨论】:

      【解决方案3】:

      我使用的是 Mac OS,但能够通过执行 mkvirtualenv --system-site-packages XXXX 而不是 mkvirtualenv XXXX 来修复此错误。

      在虚拟环境中运行pip install -r requirements.txt 之前给了我AttributeError: 'module' object has no attribute 'wraps',但现在没有了。

      【讨论】:

        【解决方案4】:

        在 Windows 上使用 activestate python 全新安装 我刚刚使用easy_install降级了pip

        easy_install pip==7.1.2
        

        然后它开始工作了......

        【讨论】:

          【解决方案5】:

          这发生在我将 virtualenv 目录(连同项目)移动到新位置之后,我显然不应该这样做,因为(现在阅读文档)手册清楚地说明了一些 [完整] 硬编码路径包含在环境中。

          删除 bin/、include/、lib/ 和 lib64/ 目录,然后重新创建 virtualenv 为我解决了这个问题。

          我确实考虑过在环境中搜索和修复完整路径,但在各处(除了 bin/activate* 文件)修复它似乎并不容易。

          【讨论】:

            【解决方案6】:

            这行得通:

            mv /usr/lib/python2.7/site-packages/pip* ./
            yum reinstall python-pip
            

            【讨论】:

              【解决方案7】:

              好的,在尝试了所有解决方案后,我可以用谷歌搜索,但看不到任何结果。我试着冒险玩一点。这可能不是最安全的解决方案,但对我来说效果很好。 看到python get-pip.py 导致:

              Requirement already up-to-date: pip in /usr/lib/python2.7/site-packages
              

              即使我已经卸载了 pip。 我转到/usr/lib/python2.7/site-packages/ 找到两个 pip 目录:pippip-6.0.8.dist-info。立即删除了两个。然后再次尝试python get-pip.py。瞧!成功了。

              【讨论】:

              • 这对我也有用,但我不得不从我的 virtualenv 中删除现有的 pip 包,而不是全局 Python dist-packages。
              猜你喜欢
              • 1970-01-01
              • 2017-12-24
              • 1970-01-01
              • 2021-08-29
              • 1970-01-01
              • 1970-01-01
              • 2014-04-21
              • 2010-11-18
              相关资源
              最近更新 更多