2015-03-13 14 views
14

Sono su Fedora. Recentemente ho aggiornato il mio sistema da F20 a F21. Pip stava lavorando bene su F20 ma dopo l'aggiornamento a F21 qualcosa deve essere andato storto. Pip ha smesso di funzionare, ogni volta che entro il comando pip <anything> l'errore di seguito si verifica:pip fallisce con AttributeError: l'oggetto 'module' non ha attributo 'wraps'

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' 
+0

avete due versioni di sei? –

+0

Non ne sono sicuro. Come faccio a controllarlo senza 'pip list'? – Theja

+0

'pip show sei', hai provato' pip install -U six'? –

risposta

13

Va bene dopo aver provato tutte le soluzioni potevo Google con alcun risultato in vista. Ho provato a rischiare e giocare un po '. Questa potrebbe non essere la soluzione più sicura ma ha funzionato bene per me. Vedendo che python get-pip.py stata:

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

anche quando avevo pip disinstallato. Mi avvicinai /usr/lib/python2.7/site-packages/ per scoprire due directory pip: pip e pip-6.0.8.dist-info. Rimosso entrambi immediatamente. Quindi provato di nuovo python get-pip.py. Ecco! ha funzionato.

+0

Questo ha funzionato anche per me, ma ho dovuto eliminare il pacchetto pip esistente dal mio virtualenv, non dai dist-package Python globali. – Cerin

-1

questo ha funzionato:

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

questo si è verificato nella mia situazione dopo che avevo spostato la directory virtualenv (insieme con il progetto) in una nuova posizione, che ho chiaramente non avrei dovuto farlo come (la lettura del doc ora) il manuale indica chiaramente che alcuni percorsi [full] hardcoded sono inclusi nell'ambiente.

L'eliminazione di bin /, include /, lib/e lib64/directories e quindi di ricreare virtualenv ha risolto il problema per me.

Ho cercato la ricerca e il fissaggio dei percorsi completi nell'ambiente, ma l'ho risolto ovunque (oltre che nei file bin/activate *) non sembrava banale.

3

successo a me su finestre con ActiveState Python nuova installazione ho appena usato easy_install di declassare il PIP

easy_install pip==7.1.2 

e allora lavoravo ....

+0

ha funzionato per me! Grazie :) –

1

Se Ricrea un env virtuale che contiene un diverso pip -version è possibile eseguire in tale scenario:

# 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'ambiente contiene ora i frammenti di pip dall'installazione precedente. Per risolvere che è possibile utilizzare l'opzione --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. 

Poi virtualenv sarà wite il percorso prima che si installa il nuovo ambiente.

Se si desidera avere un comportamento di aggiornamento, è possibile saltare virtualenv se (ad esempio bin/python) è presente.

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

Sono su Mac OS, ma era in grado di correggere questo errore facendo mkvirtualenv --system-site-packages XXXX al contrario di mkvirtualenv XXXX.

L'esecuzione di pip install -r requirements.txt nell'ambiente virtuale mi ha dato AttributeError: 'module' object has no attribute 'wraps' prima e non lo è più.

1

Usa easy_install di installare una versione precedente di pip

easy_install pip==7.0.2 

Quindi utilizzare pip per installare la versione che è disceso dal, nel mio caso è stato 9.0.1

pip install pip==9.0.1 
Problemi correlati