【问题标题】:VS Code: "Import Error: No module named request" although it's installedVS Code:“导入错误:没有名为请求的模块”,尽管它已安装
【发布时间】:2019-12-22 18:32:21
【问题描述】:

要在 python 3 中构建网络抓取程序,我执行以下操作

import urllib.request

我使用了一个 venv,它在 VS Code 中被选中并显示在左下角。 settings.json 文件有:

"python.pythonPath": "venv/bin/python"

此外,综合航站楼已多次关闭并重新打开。输入 pip list 会显示为该 venv 安装的 request

如果我运行文件没有问题,但在输出中它一直说

Traceback (most recent call last):
File "/Users/filepath/filename.py", line 2, in 
<module>
import urllib.request
ImportError: No module named request

重要提示:我上次打开此文件时,导入该模块一切正常。现在,在第二天保存并重新打开该项目后,我一遍又一遍地收到此错误消息。

我真的希望有人可以提供帮助!谢谢!

【问题讨论】:

  • 欢迎来到 Stack Overflow!查看tour。该错误消息似乎与该代码不匹配。请发布带有回溯的完整错误消息。你可以edit这个问题。还要确保将code formatting 用于代码和预格式化文本。

标签: python python-3.x visual-studio-code pip virtualenv


【解决方案1】:

正在发生两件事中的一件。一是您的环境实际上是 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 访问。

【讨论】:

  • 感谢 Brett 的详细回答!我仔细检查了这两个选项,没有名为 urllib 的文件,我正在使用 Python 3 运行程序。我现在尝试在 IDLE 中打开我的代码,它运行没有问题。也许问题在于 VS Code 以及它在我的 Mac 上的安装方式。希望我能在某个时候弄清楚;)
  • 你能打印出urllib.__file__sys.version_info并在这里分享吗?
【解决方案2】:

首先,欢迎来到 Stack Overflow! 这看起来像是您如何从 urllib 导入请求的问题。您能否尝试将导入更改为此:

from urllib import request

希望有帮助!

【讨论】:

  • 谢谢!现在我回来了“ImportError:无法导入名称请求”
  • 可能有点晚了,但是 urllib 是用 pip @JulieCate 安装的吗?
猜你喜欢
  • 1970-01-01
  • 2020-05-14
  • 2017-03-25
  • 1970-01-01
  • 1970-01-01
  • 2017-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多