Ubuntu 14.04下pygsheets提示oauth-client secret file不存在求助
嘿,我之前在服务器部署pygsheets时也踩过类似的坑——Windows上顺畅得很,到了Ubuntu服务器就各种出问题,咱们一步步来排查:
先排查权限问题:Ubuntu的用户权限管控比Windows严格得多,你得确保运行Python脚本的用户对
client_secret.json有读取权限。可以用这条命令查看文件权限:ls -l client_secret.json如果权限里没有"r"(读权限),就用这条命令添加:
chmod +r client_secret.json确认绝对路径绝对正确:服务器上的目录结构很容易搞混,比如你以为的
/home/yourname/app/client_secret.json,实际可能因为脚本是用root用户运行的,当前工作目录是/root/?你可以在脚本开头加几行代码验证当前工作目录:import os print("当前工作目录:", os.getcwd())然后把密钥文件的绝对路径精确写对,比如
/home/your_username/your_project/client_secret.json。试试让pygsheets自动找密钥文件:pygsheets有默认的配置文件搜索路径,你可以把
client_secret.json放到用户主目录的隐藏配置文件夹里:- 先创建目录:
mkdir -p ~/.config/pygsheets - 复制密钥文件过去:
cp client_secret.json ~/.config/pygsheets/ - 然后脚本里直接用
gc = pygsheets.authorize(),不用手动指定client_secret参数,让它自动去默认目录找。
- 先创建目录:
注意服务器无界面环境的认证差异:如果你的错误是OAuth授权相关的(比如弹出浏览器失败),那可能是你用的是面向桌面应用的client_secret.json,服务器无界面环境需要用服务账号密钥(是另一种JSON文件,包含
private_key字段)。这种情况下你需要去Google Cloud控制台创建服务账号,下载对应的密钥文件来使用。
要是能把具体的错误信息贴出来,能更快定位问题,但先试试上面这几个方法,大概率能解决路径或权限的问题。
内容的提问来源于stack exchange,提问作者CARTOS

