很快,我的一个运行得很好的脚本停止工作,抛出了一个
ModuleNotFoundError:没有名为“requests.auth”的模块
我不记得更改过脚本使用的 Conda 环境。
有一天一切正常,第二天就停止了。我不知道哪个参数改变了。
我尝试了多种途径来寻找解决方案,但没有成功。其中包括:
设置新的、清理Conda环境,肯定已安装请求
清除 Visual Studio Code 的缓存
多次重启
奇怪的部分是这样的:当我在 shell 的交互式会话中运行以下命令时,它起作用并且我收到“响应 [200]”。
当我在 Visual Studio Code 中的 Jupyter Notebook 或 .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
请求:2.31.0
康达:24.1.2
通过快捷键 Ctrl + Shift + P 检查您的 Python 解释器,然后输入“Python:选择解释器”以选择正确的 Python 解释器。
如果不起作用,请尝试命令
pip install requests
。
最终,问题的解决出乎意料地简单,并且源于一个根本性的用户错误。
该问题是由于项目文件夹中名为“requests”的子目录引起的。因此,当尝试使用
import requests
导入库时,导入的是子目录而不是预期的库。
缺乏必要的模块,这导致了MouleNotFoundError
。
解决方案同样简单:重命名有问题的文件夹立即恢复导入过程的功能,从而恢复脚本。
注意:永远不要命名类似于现有库的东西
以下解决方案帮助我找到了我的问题:https://stackoverflow.com/a/36522445/21402820