2015-03-13 12 views
14

Jestem na Fedorze. Niedawno zaktualizowałem swój system z F20 na F21. Pip działał poprawnie na F20, ale po aktualizacji do F21 coś musiało pójść nie tak. Pip przestał działać, za każdym razem kiedy wprowadzić polecenie pip <anything> błąd występuje poniżej:pip nie działa z AttributeError: obiekt 'module' nie ma atrybutu '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

masz dwa wersje sześciu? –

+0

Nie jestem pewien. Jak mam sprawdzić to bez "pip list"? – Theja

+0

'pip show six', czy wypróbowałeś' pip install -U six'? –

Odpowiedz

13

Ok po wypróbowaniu wszystkich rozwiązań mogłem Google z żadnego wyniku w zasięgu wzroku. Próbowałem trochę ryzykować i grać. To może nie być najbezpieczniejsze rozwiązanie, ale zadziałało dobrze. Widząc, że python get-pip.py następująco:

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

nawet gdy miałem pip odinstalowane. Przeszedłem do /usr/lib/python2.7/site-packages/, aby znaleźć dwa katalogi pip: pip i pip-6.0.8.dist-info. Usunięto oba natychmiast. Następnie ponownie wypróbowałem python get-pip.py. Voila! zadziałało.

+0

To działało również dla mnie, ale musiałem usunąć istniejący pakiet pip z mojego virtualenv, a nie z globalnych pakietów Pythona. – Cerin

-1

To działało:

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

Nastąpiło to w mojej sytuacji po tym jak przeniósł katalog virtualenv (wraz z projektem) do nowej lokalizacji, która wyraźnie nie powinien zrobić jak (czytanie doc teraz) instrukcja wyraźnie stwierdza, że ​​niektóre [pełne] zakodowane ścieżki są zawarte w środowisku.

Usunięcie bin /, include /, lib/i lib64/katalogów, a następnie ponowne utworzenie virtualenv rozwiązało problem.

Szukałem w poszukiwaniu i naprawieniu pełnych ścieżek w środowisku, ale naprawienie go wszędzie (poza tym w bin/activ *) nie wydawało się banalne.

3

stało mi na oknach z ActiveState pytona świeże zainstalować Właśnie używane easy_install downgrade PIP

easy_install pip==7.1.2 

a następnie pracowała ....

+0

Pracowałem dla mnie! dzięki :) –

1

Jeśli odtworzyć wirtualny env zawierający inny pip -wersję można uruchomić na taki scenariusz:

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

Środowisko zawiera teraz fragmenty pip z poprzedniej instalacji. Aby ustalić, które można użyć opcji --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. 

Wtedy virtualenv wite na ścieżkę przed instaluje nowe środowisko.

Jeśli chcesz zachować aktualizację, możesz pominąć virtualenv, jeśli (np.) Bin/python) jest obecny.

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

Jestem na Mac OS, ale był w stanie naprawić ten błąd wykonując mkvirtualenv --system-site-packages XXXX w przeciwieństwie do mkvirtualenv XXXX.

Uruchomienie pip install -r requirements.txt w środowisku wirtualnym dawało mi wcześniej AttributeError: 'module' object has no attribute 'wraps' i już nie.

1

Zastosowanie easy_install zainstalować wcześniejszą wersję pip

easy_install pip==7.0.2 

Następnie użyj pip zainstalować wersję, którą zstąpił z moim przypadku było 9.0.1

pip install pip==9.0.1