Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pygsheets-使用dotenv而不是json文件_Python_Pygsheets - Fatal编程技术网

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

Python pygsheets-使用dotenv而不是json文件,python,pygsheets,Python,Pygsheets,连接到gsheets:通常的方法是使用脚本gsheets.py所在的根文件夹中的creds.json文件运行gc=pygsheets.authorize()(下面的文件夹结构) 希望使用服务\u帐户\u环境\u var而不是使用json文件 creds.json文件如下所示: { "token": null, "refresh_token": "token", "id_token": null, "token_uri": "token_uri",

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

希望使用
服务\u帐户\u环境\u var
而不是使用json文件

creds.json文件如下所示:

{
    "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文件:

这假设您已使用上述服务帐户部分中描述的Service Account.json文件的值设置了环境变量key GDRIVE_API_CREDENTIALS set

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

创建.env文件(我真的不知道如何以env文件格式表达json,所以将单个key:value对包装在{}…:

创建一个settings.py文件:

# settings.py

from dotenv import load_dotenv
load_dotenv()

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

pygsheets.authorize(service_account_env_var = creds)


当creds作为arg提供给
服务\u帐户\u环境\u var

时,最终结果将是成功连接。如果查看pygsheets代码,可以看到它使用json.load。因此,在您的例子中,只需将整个json文件作为字符串存储在一个env变量中

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

编辑: 如果已完成身份验证流,则可以将生成的令牌文件直接用作json并从中创建凭据。没有直接选项,您必须从中创建凭据对象。参考此代码


注:现在开始旅行,将更新以包含代码示例。

谢谢尼廷。我完成了oauth流,它以json文件的形式生成了一个auth令牌。这是否意味着即使我将此令牌转换为字符串,它也无法工作?i、 e.我是否需要使用服务帐户密钥
# .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

from dotenv import load_dotenv
load_dotenv()

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

pygsheets.authorize(service_account_env_var = creds)