为什么没有按照google-auth库安装requests模块?

问题描述 投票:0回答:3

我正在使用 Google Calendar API 来获取一些事件,并使用 venv 来容纳所需的所有包,我遇到了一个简单的问题:

google.auth.transport.requests
无法正常运行,引用
requests 
软件包未安装。

代码和错误:


使用一行代码就可以观察到问题:

from google.auth.transport.requests import Request

以下错误从

google.auth.transport.requests
(位于两个回溯的底部)转储到控制台:

File "<string>", line 3, in raise_from
ImportError: The requests library is not installed, please install the requests package to use the requests transport.

失败的尝试


  1. 删除并重新制作 venv。
  2. 使用 --no-cache-dir 和 --ignore-installed 安装模块。

资讯


  1. import requests
    的控制台执行
    from google.auth.transport.requests import Request
    env\Scripts\python
    没有问题。
  2. 放入文件中时的相同行
    temp.py
    放入以下目录中时按以下方式执行:
    • AutoMate\
      :安全
    • AutoMate\src\
      :安全
    • AutoMate\src\sources\
      :错误
    • AutoMate\src\sources\temp\
      :安全(emp 源仅用于调试)
    • AutoMate\src\sources\util\
      :安全。

注意:这里和下面的所有测试都是使用

env\Scripts\python
env\Scripts\pip
从 AutoMate\ 运行的。

  1. 没有在 venv 之外的 pip 中安装任何 google auth 模块。

  2. 项目结构如下:

AutoMate
|   temp.py
├───env
│   ├───Include
│   ├───Lib
│   └───Scripts
└───src
    │   AutoMate.pyw
    │
    └───sources
        │   calendar.py --> Problematic file
        │   whatsapp.py
        │   __init__.py
        │  
        └───util

  1. env\Scripts\pip list
    的输出:
Package                  Version
------------------------ ---------
cachetools               4.2.1
certifi                  2020.12.5
chardet                  4.0.0
google-api-core          1.26.1
google-api-python-client 2.0.2
google-auth              1.27.1
google-auth-httplib2     0.1.0
google-auth-oauthlib     0.4.3
googleapis-common-protos 1.53.0
httplib2                 0.19.0
idna                     2.10
oauthlib                 3.1.0
packaging                20.9
pip                      21.0.1
protobuf                 3.15.5
pyasn1                   0.4.8
pyasn1-modules           0.2.8
pyparsing                2.4.7
pytz                     2021.1
requests                 2.25.1
requests-oauthlib        1.3.0
rsa                      4.7.2
selenium                 3.141.0
setuptools               49.2.1
six                      1.15.0
uritemplate              3.0.1
urllib3                  1.26.3
python python-requests google-calendar-api google-auth-library
3个回答
6
投票

解决方案


任何使用

google.auth.transport.requests
的文件不得在与其自身相同的目录中具有完全命名为 calendar.py** 的
any
文件。 任何*其他文件名都可以,甚至是
calendar.python
Calendar.py

** 在测试中,似乎

requests.py
datetime.py
也是一些无效名称,而
math.py
time.py
似乎工作正常,也许这些无效名称在内部使用?需要更多知识。

原因


看起来有些人对我有一些内部干扰,我希望有人也能回应这个问题的原因。


0
投票

导入

google.auth.transport.requests
包时,
requests
内有一个 try-except 块,即使该包已安装,它也会默认显示该错误消息。 代码

尝试直接在 REPL 中导入请求发现

from collections import Mapping
有问题(我当时使用的是 Python v3.10)。正如here所建议的,降级我的Python版本并创建一个新的venv帮助我解决了这个问题。


0
投票

就我而言,它有助于运行

pip install requests

© www.soinside.com 2019 - 2024. All rights reserved.