ModuleNotFoundError: 没有名为'requests.auth'的模块

-1 投票
2 回答
85 浏览
提问于 2025-04-14 16:21

简单来说,我有一个脚本,之前运行得很好,但突然就不工作了,出现了一个错误:

ModuleNotFoundError: 没有名为 'requests.auth' 的模块

我不记得自己改过这个脚本使用的 Conda 环境。

有一天一切都正常,第二天就出问题了。我不知道是什么参数变了。

我尝试了几种方法来解决这个问题,但都没有成功。其中包括:

  • 创建一个新的、干净的 Conda 环境,并确保安装了 requests

  • 清理 Visual Studio Code 的缓存

  • 重启几次电脑

奇怪的是:当我在命令行的交互式会话中运行以下命令时,它是可以工作的,并且我得到了 "Response [200]" 的结果。

但是当我在 Jupyter Notebook 或者在 Visual Studio Code 中的 .py 文件里运行时,就会出现上面提到的 ModuleNotFoundError。通过命令行执行文件也是一样的情况。

以上所有测试都是在同一个 Conda 环境中进行的,这个环境里肯定安装了 Requests

另外:在我可以访问的一个虚拟环境中是可以正常工作的,而我的 Visual Studio Code 设置是同步到这个虚拟环境的。所以可能不是 Visual Studio Code 的问题,而是我电脑本地的某些设置?

import requests
from requests.auth import HTTPBasicAuth

basic = HTTPBasicAuth('user', 'pass')

requests.get('https://httpbin.org/basic-auth/user/pass', auth=basic)

一些规格:

  • 操作系统:Windows 10

  • Python 版本:3.12.2

  • Requests 版本:2.31.0

  • Conda 版本:24.1.2

2 个回答

0

通过按快捷键 Ctrl + Shift + P 来检查你的 Python 解释器,然后输入“Python: 选择解释器”来选择正确的 Python 解释器。

如果这样还不行,可以试试输入命令 pip install requests 来安装一个叫做 requests 的库。

-1

最后,问题的解决其实很简单,主要是因为用户犯了一个基本的错误。

问题出在项目文件夹里有一个叫“requests”的子文件夹。因此,当我试图用 import requests 导入库的时候,实际上导入的是这个子文件夹,而不是我们想要的库。因为缺少必要的模块,这就导致了 ModuleNotFoundError 的错误。

解决办法也很简单:只要把那个有问题的文件夹改个名字,就能立刻恢复导入功能,脚本也能正常运行了。

关于我的测试,回想起来,发现请求库中的 requests.auth 在项目目录外的环境中,比如在命令行的普通交互会话或者远程虚拟机上,导入是正常的。但是在项目目录内,像在提到的 .py 和 .ipynb 文件中,导入就失败了。

注意:不要给文件夹起和现有库一样的名字。

以下这个解决方案帮助我找到了问题所在: https://stackoverflow.com/a/36522445/21402820

撰写回答