2015-03-06 17 views
7

Sto usando Python 2.7 64 bit su Windows 8. Ho installato la versione 2.3 delle Richieste. Sto provando a fare funzionare questa dichiarazione di importazione come parte di portare in numero di tentativi nel mio codice:Impossibile import request.packages.urllib3.util 'Retry'

from requests.packages.urllib3.util import Retry 

ho urllib3 installato anche (ho appena installato subito via Pip). Viene visualizzato il messaggio di errore:

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 

Qualcuno può dirmi perché questo è? Esistono altre dipendenze di cui non sono a conoscenza per eseguire correttamente questa riga di codice?

Grazie

+0

possibile duplicato di [ImportError: Non è possibile importare nome X] (http://stackoverflow.com/questions/ 9252543/importerror-can not-import-name-x) – alfasin

+1

@alfasin Non riesco a vedere nulla su quella pagina che mi aiuterà? – gdogg371

+0

Controlla le tue importazioni - suggerisce di avere dipendenze circolari – alfasin

risposta

6

Potrebbe essere necessaria una versione più recente di Richieste. Ho appena provato con v2.5.1:

from requests.packages.urllib3.util import Retry 

Sembra funzionare. A proposito: l'ultima versione è v2.5.3, che vale la pena di aggiornare.

Anche se si dispone di una versione ragionevolmente recente di urllib3 installato separatamente, questo dovrebbe funzionare anche:

from urllib3.util import Retry 

Purtroppo, controlliamo i specifica isinstance tipo di Retry in PoolManager e ConnectionPool, in modo che i due tipi di Retry oggetti potrebbe non essere perfettamente intercambiabile (Se qualcuno vuole risolvere questo problema, sarei uno su un PR.)

Per ora, se avete intenzione di utilizzare l'oggetto Retry con la versione requests di urllib3, è necessario importarlo da lì direttamente.

+0

ho dimenticato di inviare una risposta per questo. Ho provato a importare i tentativi direttamente da urllib3 quando l'ho installato un paio di giorni fa e ha funzionato bene. Comunque grazie per la risposta. – gdogg371

+1

@ gdogg371 Ah, buono a sapersi, grazie. Dovrebbe andare bene in alcuni/molti casi, ma ci possono essere casi limite in cui non sono perfettamente intercambiabili. Tienilo a mente se ti imbatti in comportamenti strani. :) – shazow

+0

Qual è la versione minima? urllib3 1.7.1/richieste 2.2.1 mostra l'errore. – Nemo

1

richieste non ha più vendored moduli in request.package

si sarà necessario fare riferimento direttamente urllib3