ошибка python 3.2, говорящая, что urllib.parse.urlencode() не определен

Я пытаюсь использовать метод urllib.parse.urlencode() в одном из своих скриптов. импортировать urllib

#!/usr/bin/python3.2

import urllib

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

Раньше это работало, но теперь я получаю следующую ошибку.

Вывод

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'

Первоначально я сомневался в своей оболочке Python, но когда я проверил, она использует версию Python 3.2, которая должна быть отличной.

Теперь я совершенно озадачен, почему оболочка Python ведет себя таким образом. Я что-то упустил здесь?

Спасибо


person Rakesh    schedule 22.04.2012    source источник
comment
@larsmans спасибо за ответ.   -  person Rakesh    schedule 22.04.2012


Ответы (1)


Вы не показываете импорт в своей программе, поэтому я не могу быть уверен, но держу пари, что вы это сделали

import urllib

который не будет импортировать и реэкспортировать отдельный модуль urllib.parse. Делать

import urllib.parse

вместо.

(import urllib довольно бессмысленно в Python 3.x, поскольку вся функциональность находится в подмодулях, и они не импортируются модулем верхнего уровня.)

person Fred Foo    schedule 22.04.2012
comment
спасибо за ответ. Извините, я пропустил оператор импорта при копировании кода. Теперь я отредактировал свой вопрос. ваше решение сработало для меня. Думаю, случайно я удалил часть .parse из моего оператора импорта, предполагая, что он будет включать подмодуль. Поскольку раньше у меня был import urllib.parse, поэтому он работал раньше, но когда я удалил подмодуль, он не работал, и я был сбит с толку. - person Rakesh; 22.04.2012