我想导入urllib以使用功能"请求"。 但是,尝试这样做时遇到错误。 我尝试了pip install urllib,但仍然遇到相同的错误。 我正在使用Python 3.6。 真的感谢任何帮助。
我确实使用以下代码导入urllib.request:
1
2
3
4
5
6
7
8import urllib.request, urllib.parse, urllib.error
fhand = urllib.request.urlopen('data.pr4e.org/romeo.txt')
counts = dict()
for line in fhand:
words = line.decode().split()
for word in words:
counts[word] = counts.get(word, 0) + 1
print(counts)
但是它给了我这个错误:ModuleNotFoundError:没有名为" urllib.parse"的模块; 'urllib'不是软件包
这是错误的屏幕截图
什么操作系统,有哪些错误等?
我正在使用Windows。 我用更多详细信息和问题的屏幕快照编辑了问题。 请检查一下。
您尝试了from urllib import request吗?
您是如何安装Python3的? 请尝试提供所有信息,以便人们可以回答您的问题。
始终将完整的错误消息(Traceback)置于问题中(作为文本,而不是屏幕截图)。 还有其他有用的信息。
您将代码保存在文件urllib.py中,这是您的问题。 import urllib首先尝试将文件urllib.py加载到本地文件夹中,然后加载文件而不是预期的模块。
urllib是一个标准库,您无需安装。 import urllib
我做到了,但仍然无法正常工作。我用更多详细信息和问题的屏幕快照编辑了问题。请检查一下。
或从urllib导入请求
@mohamed您输入的内容与您的答案完全不符
@ArthurTacca非常感谢您!它与您的编辑一起工作。
更正的代码是
1
2
3
4
5
6
7
8import urllib.request
fhand = urllib.request.urlopen('http://data.pr4e.org/romeo.txt')
counts = dict()
for line in fhand:
words = line.decode().split()
for word in words:
counts[word] = counts.get(word, 0) + 1
print(counts)
运行上面的代码会产生
1{'Who': 1, 'is': 1, 'already': 1, 'sick': 1, 'and': 1, 'pale': 1, 'with': 1, 'grief': 1}
urllib是标准的python库(内置),因此您无需安装它。 如果需要使用request,只需导入它即可:
1import urllib.request
如果它不起作用,则可能是您以错误的方式编译了python,请客气并提供更多详细信息。
我确实使用以下代码导入urllib.request:导入urllib.request,urllib.parse,urllib.error fhand = urllib.request.urlopen(data.pr4e.org/romeo.txt)counts = dict()用于行中的代码:单词= line.decode()。split()表示单词中的单词:counts [word] = counts.get(word,0)+ 1 print(counts),但它给了我这个错误:ModuleNotFoundError:没有名为urllib.parse的模块; urllib不是软件包
@ahmed我用更多详细信息和屏幕截图编辑了问题,请检查它。
上面的代码对我来说很好用(只需用fhand = urllib.request.urlopen(http:data.pr4e.orgromeo.txt)替换第2行),而没有任何ModuleNotFoundError异常,您确定您拥有python 3.6吗?如果是的话,您是否拥有python 3.6.3或其他工具?
我有python 3.6.3
问题解决了,非常感谢兄弟!
发生这种情况是因为名为urllib.py的本地模块遮盖了您尝试使用的已安装请求模块。 当前目录位于sys.path之前,因此本地名称优先于已安装名称。
出现这种情况时,另一个调试技巧是仔细查看Traceback,并意识到所涉及脚本的名称与您要导入的模块匹配。
将文件重命名为其他名称,例如url.py。
然后,它工作正常。
希望能帮助到你!