在colab中与python一起使用firestore

在colab中与python一起使用firestore,python,firebase,google-cloud-firestore,firebase-admin,google-colaboratory,Python,Firebase,Google Cloud Firestore,Firebase Admin,Google Colaboratory,我正在尝试将colab中的firebase与Python一起使用。但是有一个无法解决的错误, 所以我需要一些帮助 import firebase_admin from firebase_admin import credentials from firebase_admin import firestore cred = credentials.Certificate('/content/myKey.json') firebase_admin.initialize_app(cred) # e

我正在尝试将colab中的firebase与Python一起使用。但是有一个无法解决的错误, 所以我需要一些帮助

import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore


cred = credentials.Certificate('/content/myKey.json')
firebase_admin.initialize_app(cred) # error in this line
db = firestore.client()

ValueError: : The default Firebase app already exists. This means you called initialize_app() more than once without providing an app name as the second argument. In most cases you only need to call initialize_app() once. But if you do want to initialize multiple apps, pass a second argument to initialize_app() to give each app a unique name.
我能为解决这个问题做些什么

我也发现了类似的答案,所以我尝试了很多技巧,如下所示

import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore

if not firebase_admin._apps:
  cred = credentials.Certificate('/content/foodle-94e80-firebase-adminsdk-zr21t- f02504e9fb.json')
  firebase_admin.initialize_app(cred)
else:
  app = firebase_admin.get_app()

db = firestore.client(app) # new error in this line
但新的错误让我困惑

DefaultCredentialsError:无法自动确定凭据。请设置GOOGLE_应用程序_凭据或显式创建凭据并重新运行应用程序。有关更多信息,请参阅


我能做什么?

看起来Firebase应用程序的默认实例正在某个地方初始化。创建默认实例时,它使用GOOGLE_应用程序_凭据,而不是手动传递的凭据。 您可以向脚本提供GOOGLE_应用程序_凭据,也可以忽略firebase应用程序的默认实例并创建一个显式命名的实例

要创建显式命名的应用程序,请更改代码以提供名称:

import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore


cred = credentials.Certificate('/content/myKey.json')
firebase_admin.initialize_app(credential=cred, name='myApp') 
db = firestore.client()
要提供谷歌应用程序凭据并使用默认应用程序

如果您正在从控制台运行python脚本,则可以通过运行

export-GOOGLE\u-APPLICATION\u-CREDENTIALS='/content/myKey.json'

在colab中,您需要将以下内容添加到脚本中:

import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="/content/myKey.json"
在此之后,您可以运行第二个示例


(要获取JSON的凭据,请选择您的firebase adminsdk服务帐户,单击“添加密钥”、“创建新密钥”,选择JSON作为选项并下载生成的文件。)

看起来firebase应用程序的默认实例正在某个地方初始化。创建默认实例时,它使用GOOGLE_应用程序_凭据,而不是手动传递的凭据。 您可以向脚本提供GOOGLE_应用程序_凭据,也可以忽略firebase应用程序的默认实例并创建一个显式命名的实例

要创建显式命名的应用程序,请更改代码以提供名称:

import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore


cred = credentials.Certificate('/content/myKey.json')
firebase_admin.initialize_app(credential=cred, name='myApp') 
db = firestore.client()
要提供谷歌应用程序凭据并使用默认应用程序

如果您正在从控制台运行python脚本,则可以通过运行

export-GOOGLE\u-APPLICATION\u-CREDENTIALS='/content/myKey.json'

在colab中,您需要将以下内容添加到脚本中:

import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="/content/myKey.json"
在此之后,您可以运行第二个示例


(要获取JSON的凭据,请选择您的firebase adminsdk服务帐户,单击“添加密钥”、“创建新密钥”,选择JSON作为您的选项并下载生成的文件。)

在我的例子中,它与

cred = credentials.Certificate("/content/drive/My Drive/Colab Notebooks/LALALA.json")
firebase_admin.initialize_app(cred)

在我的情况下,它与

cred = credentials.Certificate("/content/drive/My Drive/Colab Notebooks/LALALA.json")
firebase_admin.initialize_app(cred)