首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pygsheets -使用dotenv而不是json文件

pygsheets -使用dotenv而不是json文件
EN

Stack Overflow用户
提问于 2019-10-31 12:34:51
回答 1查看 1.6K关注 0票数 1

连接到gsheets:通常的方法是在脚本gc = pygsheets.authorize() (下面的文件夹结构)的根文件夹中运行creds.json文件。

代码语言:javascript
复制
├── creds.json
├── gsheets.py

希望使用service_account_env_var而不是json文件。

creds.json文件如下所示:

代码语言:javascript
复制
{
    "token": null, 
    "refresh_token": "token", 
    "id_token": null, 
    "token_uri": "token_uri", 
    "client_id": "client_id.apps.googleusercontent.com", 
    "client_secret": "secret"
}

如何使用json文件中的凭据创建.env文件?

根据pygsheets文档:pygsheets .环境变量

这假设您已经设置了一个环境变量键GDRIVE_API_CREDENTIALS集,其中包含上述服务帐户部分中描述的服务帐户.json文件的值。

不幸的是,没有关于如何设置环境变量的指导。我的想法是:

创建.env文件(我真的不确定如何用env文件格式表示json,因此在{}.中包装单独的键:值对):

代码语言:javascript
复制
# .env
GDRIVE_API_CREDENTIALS = {
token = null
refresh_token = token
id_token = null
token_uri = token_uri
client_id = client_id.apps.googleusercontent.com
client_secret = secret }

创建一个settings.py:

代码语言:javascript
复制
# settings.py

from dotenv import load_dotenv
load_dotenv()

import os
creds = os.getenv('GDRIVE_API_CREDENTIALS')

pygsheets.authorize(service_account_env_var = creds)

当arg作为arg提供到service_account_env_var时,最终的结果将是成功的连接。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-31 15:56:44

如果您查看pygsheets代码,可以看到它使用的是json.loads。因此,在您的示例中,只需将整个json文件存储为env变量中的字符串即可。

还请注意,此选项用于服务文件,您的文件看起来像用户凭据。

编辑:如果您已经完成了auth流,您可以直接将生成的令牌文件作为json使用,并由此创建凭据。没有直接的选项,您必须从它创建凭据对象。https://github.com/nithinmurali/pygsheets/blob/staging/pygsheets/authorization.py#L37查看此代码以供参考。

PS。现在旅行,将更新到包含代码示例。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58643462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档