20

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

7 回答 7

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 目录:pippip-6.0.8.dist-info. 立即删除了两个。然后又试python get-pip.py了一次。瞧!有效。

于 2015-03-13T19:07:10.753 回答
8

使用 easy_install 安装先前版本的 pip

easy_install pip==7.0.2

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

pip install pip==9.0.1
于 2017-04-04T15:33:08.150 回答
7

在 Windows 上使用 activestate python 全新安装时发生在我身上我刚刚使用 easy_install 来降级 pip

easy_install pip==7.1.2

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

于 2016-06-08T14:33:30.833 回答
4

如果您重新创建一个包含不同 pip -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 如果(例如)bin/python)存在。

# [ ! -x /tmp/env/bin/python ] && virtualenv /tmp/env
于 2016-08-01T16:58:05.987 回答
1

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

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

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

于 2016-02-15T17:40:48.023 回答
0

这有效:

mv /usr/lib/python2.7/site-packages/pip* ./
yum reinstall python-pip
于 2015-05-12T00:21:19.830 回答
0

我在 Mac OS 上,但能够通过做mkvirtualenv --system-site-packages XXXX而不是mkvirtualenv XXXX.

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

于 2016-10-18T10:08:32.333 回答