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

The*_*eja 20 python pip python-2.7 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'
Run Code Online (Sandbox Code Playgroud)

The*_*eja 14

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

Requirement already up-to-date: pip in /usr/lib/python2.7/site-packages
Run Code Online (Sandbox Code Playgroud)

即使我已经卸下了pip.我去找了/usr/lib/python2.7/site-packages/两个pip目录:pippip-6.0.8.dist-info.立即删除了两个.然后python get-pip.py再试一次.瞧!有效.


Fru*_*uch 7

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

easy_install pip==7.1.2
Run Code Online (Sandbox Code Playgroud)

然后它正在工作....


Dev*_*ark 7

使用easy_install安装先前版本的pip

easy_install pip==7.0.2
Run Code Online (Sandbox Code Playgroud)

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

pip install pip==9.0.1
Run Code Online (Sandbox Code Playgroud)


小智 5

如果您重新创建包含不同 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'
Run Code Online (Sandbox Code Playgroud)

环境现在包含先前安装的 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.
Run Code Online (Sandbox Code Playgroud)

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

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

# [ ! -x /tmp/env/bin/python ] && virtualenv /tmp/env
Run Code Online (Sandbox Code Playgroud)