【问题标题】:ImportError: No module named requests but module already existsImportError:没有名为请求的模块,但模块已存在
【发布时间】:2021-04-15 11:48:12
【问题描述】:

我的代码在尝试导入请求时失败,尽管它已经安装。我做了一个 pip list 并看到那里请求的模块,我卸载它并使用 pip installpip3 install 重新安装它,还添加了 sudo两次。每当我尝试安装它时,我都会收到要求已经满足的消息。还有什么我可以尝试的吗? 如果它对我在 Mac 上使用 VSCode 有帮助,我还安装了 Jupyter 和 Spyder,并且之前使用过它们,但是我从未在此设备上使用过 requests 模块。

更新:

我创建了一个 virtualenv 并在那里安装了请求,在 venv 中运行脚本时我不再收到错误,但是我仍然很好奇为什么它被抛出到基本 env 中,还有什么我可以检查的吗?

【问题讨论】:

  • 您是否在正确的环境中...我的意思是您安装请求的环境
  • 我想我应该是,在命令行上我看到(base),我还没有创建任何venv所以使用PC的base环境来安装模块

标签: python python-requests python-module


【解决方案1】:

您可能有多个安装/环境。

在“导入请求”之前,输入“import sys; print(sys.executable)”。 这将打印正在使用的 python 可执行文件 - 验证它是否与您可以成功导入请求的文件相同。

【讨论】:

  • 谢谢你的回答,我已经运行了代码,这就是我得到的:/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS /Python 那么我使用的是 Python 2.7,对吗?所以 pip install 应该有效吗?
  • 如果直接从终端运行python,“导入请求”有效吗?如果是这样,如果你运行“import sys; print(sys.executable)”,你得到的 python 可执行文件路径是否与你在注释中粘贴的相同?
  • 不,从终端运行时仍然出现相同的错误,可执行文件是一样的。话虽如此,我创建了一个 venv 并且从那里一切正常,尽管 sys.executable 有一个不同的,因为它指向 venv
  • 是的,一个虚拟环境将有一个不同的可执行文件然后在它之外,并且可能有一个新的请求安装在它里面。因此,如果您激活虚拟环境并尝试按预期方式运行脚本,现在一切正常吗?如果你想在你的虚拟环境之外修复你的 requests 模块,你可能需要卸载它并重新安装它或使用 --upgrade 参数安装它。
【解决方案2】:

对我有用的是在您尝试再次安装请求时在 pip3 指定的目录中删除三个名称以“request-SOMETHING”开头的文件夹,例如

Requirement already satisfied: requests in /usr/lib/python3/dist-packages

然后用 pip 重新安装,它应该在你的 sys.executable 目录中。

【讨论】:

    【解决方案3】:

    试试这个

    pip install chardet2 urllib3 
    

    python3 -m pip install requests
    

    包依赖有问题

    【讨论】:

    • 感谢您的回复,我尝试了这两个命令,但仍然收到相同的错误:(