【问题标题】:Firebase Admin SDK with Flask throws error No module named 'firebase_admin'带有 Flask 的 Firebase Admin SDK 抛出错误 No module named 'firebase_admin'
【发布时间】:2019-06-11 04:49:23
【问题描述】:

--- 问题已结束

这是我的错误,我的 uWSGI 启动脚本切换到不同的 virtualenv。

--- 原始问题

我正在尝试将推送通知从我的 Flask 应用服务器发布到 Android APP。

服务器环境(开发):

  • Mac OS Sierra
  • Flask 1.0.2
  • Python 3.6.5
  • firebase-admin SDK 2.17.0(最新版本)

将代码作为 Flask 应用程序运行以初始化 SDK 时,import 语句会抛出错误:

import firebase_admin

ModuleNotFoundError:没有名为“firebase_admin”的模块

但是,从 Python 解释器模式运行上述 import 语句不会出错。 PyCharm 还能够识别firebase_admin 模块。所有三个设置(Flask 应用程序、解释器、PyCharm)都使用相同的 virtualenv。

我尝试了几个旧版本的 SDK,但错误仍然存​​在。有什么线索吗?

--- 更多细节

该模块是使用命令pip install firebase-admin 从 virtualenv 中的命令行安装的。

在同一 virtualenv 中从命令行将代码作为 Flask+uWSGI 应用程序运行时发生错误。 pip freeze 表明该模块确实存在。

--- 问题已结束

这是我的错误,我的 uWSGI 启动脚本切换到不同的 virtualenv。

【问题讨论】:

    标签: python firebase flask firebase-admin


    【解决方案1】:

    您是如何将firebase_admin 包安装/添加到您的项目中的?

    如果您没有明确安装/添加软件包,我只遇到过少数情况(可能还有其他情况/解决方案),这会发出错误ModuleNotFoundError: No module named 'firebase_admin'

    PyCharm

    如果使用 PyCharm,您可以从 PyCharm 首选项中安装/添加它

    • 文件 > 首选项 > 项目 > 项目解释器
    • 点击添加按钮,搜索firebase,选择合适的包:firebase-admin
    • 点击“安装包”按钮。

    Visual Studio 代码/替代安装

    我使用 Visual Studio Code,并选择使用保存在根目录中的 requirements.txt 文件将 firebase_admin 库安装到 virtualenv 中。即使您使用的是 PyCharm,您仍然可以使用此方法:

    1) 激活您的环境

    2) 创建一个requirements.txt 文件,内容如下:

    firebase_admin
    // other packages
    

    3) 运行pip install

    pip install -r requirements.txt
    

    4) 安装后,您可以通过检查以下目录中的site-packages 文件夹来确认它已经可用:

    env/lib/site-packages/firebase_admin
    env/lib/site-packages/firebase_admin-<version>.dist-info
    

    5) 再次尝试运行代码。

    希望有帮助!

    【讨论】:

    • 包括 firebase_admin 在内的所有依赖项都是使用 pip 从 virtualenv 中的命令行安装的。在这种情况下:pip install firebase-admin。即使没有从 PyCharm 安装 firebase-admin,但在我的情况下,PyCharm 识别这个模块没有问题。将代码作为 Flask 应用程序运行时出现我的问题,更具体地说,从命令行将其作为 Flask+uWSGI 运行。
    • 谢谢约翰辛。我已经确定了根本原因。我的 uWSGI 启动脚本切换到不同的 virtualenv。
    • 感谢您添加更多信息。在这种情况下,您是否尝试过比较 (1) 执行代码的程序的包路径和 (2) 项目解释器,看看它们是否相同?你可以从bernie-yum查看this answer
    • 并非如此。我完全没有想到错误 virtualenv 的可能性,因为我从正确的 virtualenv 运行应用程序,并忘记了它可以通过 uWSGI 配置自动切换。
    【解决方案2】:

    运行这个命令 pip install firebase-admin flask

    【讨论】:

      猜你喜欢
      • 2016-08-30
      • 2017-08-20
      • 2016-06-13
      • 1970-01-01
      • 2019-07-02
      • 2017-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多