2015-03-06 19 views
7

Używam Pythona 2.7 64-bitowego w systemie Windows 8. Mam zainstalowane żądanie wersji 2.3. Próbuję uruchomić tę instrukcję import w ramach wprowadzenia w liczbie prób w moim kodu:Nie można importować request.packages.urllib3.util 'Ponów próbę'

from requests.packages.urllib3.util import Retry 

mam urllib3 zainstalowany również (Właśnie zainstalowałem go teraz poprzez PIP). Otrzymuję komunikat o błędzie:

Traceback (most recent call last): 
    File "C:\Python27\counter.py", line 3, in <module> 
    from requests.packages.urllib3.util import Retry 
ImportError: cannot import name Retry 

Czy ktoś może mi powiedzieć, dlaczego tak jest? Czy są jakieś inne zależności, których nie jestem świadomy, aby pomyślnie uruchomić ten wiersz kodu?

Dzięki

+0

możliwe duplikat [ImportError: Nie można zaimportować nazwy X] (http://stackoverflow.com/questions/ 9252543/importerror-can not-import-name-x) – alfasin

+1

@alfasin Nie widzę niczego na tej stronie, która mogłaby mi pomóc? – gdogg371

+0

Sprawdź import - sugeruje, że masz zależności cykliczne – alfasin

Odpowiedz

6

Możesz potrzebować nowszej wersji Żądań. Właśnie wypróbowałem to z v2.5.1:

from requests.packages.urllib3.util import Retry 

Wydaje się pracować. FYI: Najnowsza wersja jest w wersji 2.5.3, warta aktualizacji.

Także jeśli masz dość najnowszą wersję zainstalowanego osobno urllib3, to powinno również pracować:

from urllib3.util import Retry 

Niestety sprawdzania specyficznego isinstance typ Retry w PoolManager i ConnectionPool, więc te dwa rodzaje Retry obiektów może nie być idealnie wymienny. (Jeśli ktoś chce, aby rozwiązać ten problem, byłbym +1 na PR.)

Na razie, jeśli masz zamiar na użyciu obiektu Retry z wersją urllib3requests, trzeba je importować stamtąd bezpośrednio.

+0

i zapomniałem opublikować odpowiedź na to. Próbowałem importować ponów bezpośrednio z urllib3, gdy zainstalowałem go kilka dni temu i działało dobrze. dzięki za odpowiedź. – gdogg371

+1

@ gdogg371 Ah dobrze wiedzieć, dzięki. W niektórych/wielu przypadkach powinno być dobrze, ale mogą istnieć przypadki skrajne, w których nie są one idealnie zamienne. Miej to na uwadze, jeśli wpadniesz w dziwne zachowanie. :) – shazow

+0

Jaka jest minimalna wersja? urllib3 1.7.1/requests 2.2.1 pokazuje błąd. – Nemo

1

prośby już nie ma vendored modułów request.package

trzeba będzie odwołać urllib3 bezpośrednio

Powiązane problemy