Python 3.2错误提示urllib.parse.urlencode()未定义

33

我正在尝试在我的一个脚本中使用urllib.parse.urlencode()方法。

import 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 shell,但当我检查后发现它正在使用版本为3.2的Python,应该没问题。

现在我完全不明白为什么Python shell表现出这种行为。我是否漏掉了什么?

谢谢


@larsmans 谢谢您的回复。 - Rakesh
1个回答

60

你没有展示程序中的导入,所以我无法确定,但我敢打赌你肯定做了。

import urllib

这将不会导入并重新导出单独的模块urllib.parse。请执行:

import urllib.parse

在Python 3.x中,import urllib相当无意义,因为所有功能都在子模块中,并且这些子模块不会被顶级模块导入。

取而代之的是使用子模块。


感谢您的回复。 很抱歉,在复制代码时我错过了导入语句。现在我已经编辑了我的问题。 您的解决方案对我有用。我猜是我不小心从导入语句中删除了_.parse_部分,以为它会包含子模块。由于之前我已经导入了urllib.parse,所以之前它可以工作,但是当我删除子模块时它就无法工作了,让我感到困惑。 - Rakesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接