树莓派3连接Firestore数据库遇阻:无法设置GCLOUD_PROJECT环境变量
解决树莓派3连接Firestore时无法设置环境变量的问题
我明白你在树莓派上用Firestore官方示例代码时,卡在了设置GCLOUD_PROJECT环境变量这一步——毕竟树莓派的环境变量配置有时候确实有点麻烦。别担心,这里有几个实用的替代方案能帮你绕开这个问题:
方案1:直接在代码中指定项目ID
官方示例依赖环境变量是为了通用性,但其实你可以直接在初始化Firestore客户端时显式传入项目ID,完全不用依赖环境变量。修改后的代码如下:
from google.cloud import firestore import google.cloud.exceptions def quickstart_new_instance(): # 把这里替换成你的Firestore实际项目ID project_id = "你的项目ID" # 显式指定项目ID初始化客户端 db = firestore.Client(project=project_id) # 接下来就可以正常操作数据库了,比如添加测试文档 doc_ref = db.collection("users").document("alovelace") doc_ref.set({"first": "Ada", "last": "Lovelace", "born": 1815}) # 读取文档验证连接是否成功 try: doc = doc_ref.get() print(f"文档数据: {doc.to_dict()}") except google.cloud.exceptions.NotFound: print("文档不存在") quickstart_new_instance()
方案2:运行脚本时临时注入环境变量
如果想保留官方代码的结构,你可以在运行Python脚本时临时设置环境变量,不用修改系统全局配置。在树莓派的终端里这样执行脚本:
GCLOUD_PROJECT="你的项目ID" python3 你的脚本文件名.py
这种方式只会在当前脚本运行的会话中生效,不会影响系统其他环境,适合临时测试使用。
方案3:通过服务账号密钥文件配置(推荐长期部署)
对于树莓派上的长期部署,更稳妥的方式是用服务账号密钥文件完成认证,同时也能指定项目ID:
- 登录Google Cloud控制台,找到你的项目,进入「IAM与管理」→「服务账号」,创建服务账号并下载JSON格式的密钥文件。
- 把密钥文件传到树莓派上(可以用
scp命令或者U盘拷贝)。 - 修改代码通过密钥文件初始化客户端:
from google.cloud import firestore import google.cloud.exceptions def quickstart_new_instance(): project_id = "你的项目ID" # 替换成你传到树莓派上的密钥文件实际路径 key_path = "/home/pi/firestore-key.json" db = firestore.Client( project=project_id, credentials=firestore.Client.from_service_account_json(key_path) ) # 后续数据库操作和之前一致 doc_ref = db.collection("users").document("alovelace") doc_ref.set({"first": "Ada", "last": "Lovelace", "born": 1815}) quickstart_new_instance()
或者你也可以通过设置GOOGLE_APPLICATION_CREDENTIALS环境变量指向密钥文件,这样代码里就不用显式指定密钥路径了:
GOOGLE_APPLICATION_CREDENTIALS="/home/pi/firestore-key.json" GCLOUD_PROJECT="你的项目ID" python3 你的脚本文件名.py
最后提醒下,树莓派上要确保已经安装了google-cloud-firestore库,没装的话用这条命令安装:
pip3 install google-cloud-firestore
内容的提问来源于stack exchange,提问作者mak
相关产品推荐
相关产品推荐

