要在python 3中构建网络抓取程序,请执行以下操作
import urllib.request
我使用了venv,它被选中并显示在VS Code的左下方。 settings.json
文件具有:
"python.pythonPath": "venv/bin/python"
集成终端也已关闭并重新打开多次。输入pip list
显示request
已安装该虚拟阀。
如果我运行该文件,不会出现任何问题,但是在输出中它总是说
Traceback (most recent call last):
File "/Users/filepath/filename.py", line 2, in
<module>
import urllib.request
ImportError: No module named request
重要:上次打开此文件时,导入该模块一切正常。现在,在第二天保存并重新打开该项目之后,我一遍又一遍地收到此错误消息。
我真的希望有人能提供帮助!谢谢!
答案 0 :(得分:0)
正在发生以下两种情况之一。一种是您的环境实际上是Python 2,而不是Python 3,因为urllib.request
仅存在于后者中(您可以通过在状态栏中查看屏幕的左下角来进行检查)。另一种可能性是,您在自己的代码中创建了一个名为urllib
的文件,这正遮盖了stdlib中的urllib
包。您可以通过将代码更改为import urllib; print(urllib.__file__)
来验证这一点。如果这样可以打印出其中一个文件的路径,请重命名该文件,这样就可以解决您的问题。
您无需从import urllib.request
更改导入行;与from urllib import request
基本相同,但可以使用不同的名称来获取相同的模块。
还要注意,urllib.request
包含在Python 3本身中,因此不会出现在对pip list
的调用中。我怀疑您在考虑requests
,它是一个不同的软件包,可以通过import requests
进行访问。
答案 1 :(得分:-1)
首先,欢迎您使用Stack Overflow! 这似乎与您如何从urllib导入请求有关。您能不能尝试将导入更改为此:
from urllib import request
希望有帮助!