pip因AttributeError失败:' module'对象没有属性' wraps'

时间:2015-03-13 17:57:07

标签: python python-2.7 pip fedora-21

我在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'

7 个答案:

答案 0 :(得分:14)

好的,在尝试了所有解决方案后,我可以谷歌没有看到结果。我试图冒险并玩一点。这可能不是最安全的解决方案,但它对我来说很好。 看到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 pip-6.0.8.dist-info 。立即删除了两个。然后再次尝试python get-pip.py。瞧!它奏效了。

答案 1 :(得分:7)

使用activestate python全新安装在Windows上发生 我刚刚用easy_install降级了点子

easy_install pip==7.1.2

然后它正在工作......

答案 2 :(得分:7)

使用easy_install安装先前版本的pip

easy_install pip==7.0.2

然后使用pip安装你下载的版本,在我的情况下是9.0.1

pip install pip==9.0.1

答案 3 :(得分:3)

如果您重新创建包含不同点 -version的虚拟环境,您可以遇到这样的情况:

# 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将在安装新环境之前清除路径。

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

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

答案 4 :(得分:1)

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

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

我确实在寻找和修复环境中的完整路径,但是在任何地方修复它(除了在bin / activate *文件中)并不是显而易见的。

答案 5 :(得分:0)

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

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

答案 6 :(得分:-1)

这有效:

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