web-dev-qa-db-fra.com

pip échoue avec AttributeError: l'objet 'module' n'a pas d'attribut 'wraps'

Je suis sur Fedora. J'ai récemment mis à niveau mon système de F20 à F21. Pip fonctionnait bien sur F20 mais après la mise à niveau vers F21, quelque chose s’est mal passé. Pip a cessé de fonctionner, chaque fois que j'entre dans la commande pip <anything> l'erreur ci-dessous se produit:

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'
18
Theja

OK, après avoir essayé toutes les solutions, j'ai pu chercher sur Google sans aucun résultat. J'ai essayé de risquer et de jouer un peu. Ce n'est peut-être pas la solution la plus sûre, mais cela a bien fonctionné pour moi… .. Voir que python get-pip.py entraînait:

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

même après avoir désinstallé le pip . Je suis allé à /usr/lib/python2.7/site-packages/ pour trouver deux répertoires pip:pipetpip-6.0.8.dist-info. Supprimé les deux immédiatement. Puis essayé python get-pip.py à nouveau. Voila! ça a marché.

14
Theja

m'est arrivé sur Windows avec l'activation de python frais installer Je viens d'utiliser easy_install pour rétrograder le pip

easy_install pip==7.1.2

et puis ça marchait ...

7
Fruch

Utilisez easy_install pour installer une version antérieure de pip

easy_install pip==7.0.2

Ensuite, utilisez pip pour installer la version dont vous êtes issu. Dans mon cas, c’était la version 9.0.1.

pip install pip==9.0.1
7
Devin Clark

Si vous recréez un envoi virtuel contenant une version different pip, vous pouvez exécuter ce scénario

# 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'

L'environnement contient maintenant les fragments pip de l'installation précédente. Pour résoudre ce problème, vous pouvez utiliser l'option --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.

Ensuite, virtualenv effacera le chemin avant d'installer le nouvel environnement.

Si vous voulez avoir un comportement de mise à jour, vous pouvez ignorer virtualenv si (par exemple, bin/python) est présent.

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

Cela s'est produit dans ma situation après que j'ai déplacé le répertoire virtualenv (avec le projet) vers un nouvel emplacement, ce que je n'aurais clairement pas dû faire car (en lisant le doc maintenant), le manuel indique clairement que certains chemins codés en dur sont inclus. dans l'environnement.

Supprimer les répertoires bin /, include /, lib/et lib64 /, puis recréer virtualenv a résolu le problème pour moi.

Je me suis penché sur la recherche et la correction des chemins complets dans l'environnement, mais le réparer partout (à part dans les fichiers bin/activate *) ne semblait pas trivial.

1
Atli Guðmundsson

Je suis sous Mac OS, mais j'ai pu corriger cette erreur en faisant mkvirtualenv --system-site-packages XXXX au lieu de mkvirtualenv XXXX

Exécuter pip install -r requirements.txt dans l'environnement virtuel me donnait AttributeError: 'module' object has no attribute 'wraps' avant et ne le fait plus.

0
Yuriy R