【问题标题】:GAE: ImportError while using google-authGAE:使用 google-auth 时出现 ImportError
【发布时间】:2018-03-09 16:38:54
【问题描述】:

我正在使用 google-auth 在我的 GAE 项目中进行 Firebase 身份验证。

当我使用 dev_appserver.py 在本地运行代码或将其部署到谷歌应用引擎时,一切正常。

但是当我尝试使用 Django 的 manage.py 脚本创建/运行迁移时,我得到了这个 ImportError 异常。

ImportError: Could not import 'firebase.authentication.FirebaseAuthentication' for API setting 'DEFAULT_AUTHENTICATION_CLASSES'. ImportError: No module named auth.transport.requests.

google-auth 模块安装在lib 目录下,结构如下:

- lib - google - auth - oauth2

这些导入导致ImportErrors:

import google.auth.transport.requests
from google.oauth2 import id_token

我的猜测是可能存在命名冲突,因为其他导入工作正常。

请帮忙!

【问题讨论】:

  • 我的 ImportError 与 python 在 lib 目录中找不到 google-auth 模块的事实有关。 dev_appserver.py app.yaml 工作正常。
  • 我的意思是因为您将manage.py 作为独立应用程序运行,而不是作为 GAE 应用程序运行。我建议的帖子似乎在运行 manage.py 时包含 GAE 应用程序设置,这可能意味着它将它定向到 GAE 应用程序正在使用的库。如果我理解正确的话,我对 django 并不是很熟悉。

标签: python django google-app-engine importerror google-authentication


【解决方案1】:

如果您想使用this list 中未包含的第 3 方库,则必须手动添加它们,因为您已通过添加 lib 文件夹并包含所有包文件夹来完成此操作,请按照以下步骤操作。

创建 your_app_directory/appengine_config.py 文件。

在该文件中添加以下行

from google.appengine.ext import vendor
vendor.add('lib')

这应该可以解决导入错误问题。

【讨论】:

  • 感谢 Bravin 的快速回复。我已经有了 appengine_config.py,我想这就是为什么 dev_appserver.py 可以正常工作并识别库的原因。但是python manage.py makemigrations 导致了这个 ImportError。它必须与模块名称google 做一些事情,因为其他导入工作正常。也许 googlecloudsdk 和 google-auth 库之间存在冲突?
猜你喜欢
  • 1970-01-01
  • 2021-06-07
  • 1970-01-01
  • 1970-01-01
  • 2019-01-28
  • 1970-01-01
  • 1970-01-01
  • 2017-05-11
  • 2021-06-26
相关资源
最近更新 更多