2013-07-08 10 views
10

Ho uno script Python con solo queste 2 linee:Perché questo codice Python è in esecuzione due volte?

import requests 
print len(dir(requests)) 

Esso stampa:

12 
48 

Quando si visualizza la lista attuale dir(requests), ottengo questo:

['__author__', '__build__', '__builtins__', '__copyright__', '__doc__', '__file__', '__license__', '__name__', '__package__', '__path__', '__title__', '__version__'] 
['ConnectionError', 'HTTPError', 'NullHandler', 'PreparedRequest', 'Request', 'RequestException', 'Response', 'Session', 'Timeout', 'TooManyRedirects', 'URLRequired', '__author__', '__build__', '__builtins__', '__copyright__', '__doc__', '__file__', '__license__', '__name__', '__package__', '__path__', '__title__', '__version__', 'adapters', 'api', 'auth', 'certs', 'codes', 'compat', 'cookies', 'delete', 'exceptions', 'get', 'head', 'hooks', 'logging', 'models', 'options', 'packages', 'patch', 'post', 'put', 'request', 'session', 'sessions', 'status_codes', 'structures', 'utils'] 

I Suppongo che ci siano più moduli requests o qualcosa del genere. Per favore aiuto.

+0

Quali "array reali" sono questi? Quando li stampi? Maggiori informazioni, per favore – kindall

+0

Oops. La * lista * restituita da 'dir (richieste)'. Modificato – Bruce

+0

Ma lo fai solo una volta. In quali circostanze le ottieni? – kindall

risposta

13

Hai dato al tuo script un nome di un modulo standard o qualcos'altro che viene importato dal pacchetto requests. Hai creato un'importazione circolare.

yourscript -> import requests -> [0 or more other modules] -> import yourscript -> import requests again 

Perché requests invece no completa importare la prima volta che si inizia a vedere queste differenze nella lista degli oggetti supportati.

Non farlo. Rinominare il tuo script per qualcos'altro e funzionerà tutto.

+1

Gesù. Era 'http.py'. – Bruce

1

Il primo è il proprio modulo Il secondo è il modulo per gestire le richieste HTTP. Rinominare il proprio modulo

Problemi correlati