2012-04-22 12 views
32

Sto cercando di utilizzare il metodo urllib.parse.urlencode() in uno dei miei script. importazione urllibpython 3.2 errore dicendo urllib.parse.urlencode() non è definito

#!/usr/bin/python3.2 

import urllib 

data = urllib.parse.urlencode({'type': 'device_code','client_id': 150792241632891}) 

Si stava lavorando prima, ma ora ho seguente errore.

uscita

Traceback (most recent call last): 
    File "/home/rakesh/programming/test.py", line 8, in <module> 
    data = urllib.parse.urlencode({'type': 'device_code','client_id': 150792241632891}) 
AttributeError: 'module' object has no attribute 'parse' 

Inizialmente ho dubbio il mio guscio python, ma quando ho controllato sta usando Python versione 3.2 che dovrebbe essere Fiine.

Ora sono totalmente perplesso perché la shell Python si comporta in questo modo. Mi manca qualcosa qui?

Grazie

+0

@larsmans grazie per rispondere. – Rakesh

risposta

59

Non stai mostrando le importazioni nel programma, in modo da non poter essere sicuri, ma scommetto che hai fatto

import urllib 

che non consente di importare e riesportare il separata modulo urllib.parse. Do

import urllib.parse 

invece.

(import urllib è piuttosto insensato in Python 3.x, poiché tutta la funzionalità è in sottomoduli e questi non vengono importati dal modulo toplevel.)

+0

grazie per la risposta. Mi spiace di aver perso l'istruzione import durante la copia del codice. Ora ho modificato la mia domanda. la soluzione ha funzionato per me. Immagino che accidentalmente, ho rimosso _.parse_ parte dalla mia dichiarazione di importazione assumendo che includerà il sottomodulo. Da prima avevo importato urllib.parse questo è il motivo per cui funzionava prima, ma quando rimuovo il sottomodulo non ha funzionato e sono stato confuso. – Rakesh