AttributeError:'module'对象没有属性'request

76 投票
4 回答
102568 浏览
提问于 2025-04-17 21:29

当我在Python 3.3中运行以下代码时:

import urllib
tempfile = urllib.request.urlopen("http://yahoo.com")

我遇到了以下错误:

在这里输入图片描述

我还这样做来验证:

在这里输入图片描述

我哪里做错了?

4 个回答

0
  • 在Visual Code中,你需要写成import urllib.request,而不是简单地写import urllib。
  • 另外,每当出现模块x没有属性y这样的错误时,通常是因为你当前的文件名和你想要导入的包的名字是一样的。
  • 在Python中,导入的方式是这样的:它首先会在当前目录里查找,如果找到了你想要的模块或包'x',它就认为找到了目标文件,然后再去查找'y'。但是因为你并没有定义'y',所以就会出现前面提到的错误。
1

如果你是在PyCharm上操作,就要确保你的文件名不是urllib.py。

3

有趣的是,我发现了一些跟开发环境(IDE)有关的不同表现。

在我的电脑上,Spyder和PyCharm用的是同一个解释器:在PyCharm里,我需要这样写:

import urllib.request

而在Spyder里,

import urllib

就可以正常工作。

153

在Python 3中,urllib模块被拆分成了几个部分,并且重新命名为urllib.requesturllib.parseurllib.error


所以,记得要导入urllib.request,而不是直接导入urllib

import urllib.request

撰写回答