Python CMD或.bat文件执行中出现Google_api凭据错误,但IDE中没有
我有一个python脚本,当我从Spyder或Jupyter Notebook或whateverIDE或Visual Studio编译它时,它运行良好;然而,当我试图从命令提示符下运行它时,我得到了以下错误 第50行,在func_get_credentials_ret_服务中 if not creds或not creds.valid:UnboundLocalError:赋值前引用的局部变量'creds' 我已经尝试过屏蔽get凭证代码等的某些部分,但我认为由于非常明显的原因,这不是一个解决方案 如果在.bat文件中以命令形式运行,则不起作用(给出相同的错误) 提前感谢您提供的任何帮助。 以下是相关的代码部分Python CMD或.bat文件执行中出现Google_api凭据错误,但IDE中没有,python,cmd,google-api,Python,Cmd,Google Api,我有一个python脚本,当我从Spyder或Jupyter Notebook或whateverIDE或Visual Studio编译它时,它运行良好;然而,当我试图从命令提示符下运行它时,我得到了以下错误 第50行,在func_get_credentials_ret_服务中 if not creds或not creds.valid:UnboundLocalError:赋值前引用的局部变量'creds' 我已经尝试过屏蔽get凭证代码等的某些部分,但我认为由于非常明显的原因,这不是一个解决方案
from __future__ import print_function
import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
from Message_list import ListMessagesMatchingQuery
from dateutil import parser
import datetime as dt
import pprint
import sys
import base64
from apiclient import errors
import pandas as pd
import holidays
def func_get_credentials_ret_service():
##########################################################################
## From google api page
##
##########################################################################
SCOPES = ['https://www.googleapis.com/auth/gmail.readonly']
if os.path.exists('token.pickle'):
with open('token.pickle', 'rb') as token:
creds = pickle.load(token)
# If there are no (valid) credentials available, let the user log in.
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'credentials.json', SCOPES)
creds = flow.run_local_server(port=0)
# Save the credentials for the next run
with open('token.pickle', 'wb') as token:
pickle.dump(creds, token)
service = build('gmail', 'v1', credentials=creds)
return service
service = func_get_credentials_ret_service()
results = ListMessagesMatchingQuery(service, "me", 'from: "someprovider.com"')
id_list = func_create_id_list(results)
答复:
您正在对变量creds
进行比较,然后才为其赋值
修正:
该行:
如果没有信用或信用无效:
如果token.pickle
文件存在,则将执行,但是在调用该文件之前,没有变量creds
的赋值
在范围的定义之后添加此行:
creds=None
回答:
您正在对变量creds
进行比较,然后才为其赋值
修正:
该行:
如果没有信用或信用无效:
如果token.pickle
文件存在,则将执行,但是在调用该文件之前,没有变量creds
的赋值
在范围的定义之后添加此行:
creds=None
您需要从包含.py
文件的目录中运行python命令。使用cd
切换到目录,然后运行python-Get\u-portfolio\u-from\u-vpm\u-set\u-up\u-cramer\u-trades.py
。好的,不用担心!这是一个不同的错误,所以我认为最好把它作为一个新问题来问。如果您可以接受这个答案,因为它解决了原始问题中的错误,并提出了一个新问题,其中包含了对社区真正有帮助的所有相关细节-最好保留对主题的评论,并且很难通过评论调试错误。有效的方法是更改目录。creds=None行最终创建了一个问题。非常感谢。对于任何关心的人:如果您有一个用于执行python脚本的bat文件,只需在bat文件的第一行添加:cd“path to credentials file”,它就可以工作了。Rafa再次感谢。分配前引用的局部变量“creds”
通过添加creds=None
行得到解决,解决此错误后还需要更改目录。creds=None
行是。您需要从包含.py
文件的目录中运行python命令。使用cd
切换到目录,然后运行python-Get\u-portfolio\u-from\u-vpm\u-set\u-up\u-cramer\u-trades.py
。好的,不用担心!这是一个不同的错误,所以我认为最好把它作为一个新问题来问。如果您可以接受这个答案,因为它解决了原始问题中的错误,并提出了一个新问题,其中包含了对社区真正有帮助的所有相关细节-最好保留对主题的评论,并且很难通过评论调试错误。有效的方法是更改目录。creds=None行最终创建了一个问题。非常感谢。对于任何关心的人:如果您有一个用于执行python脚本的bat文件,只需在bat文件的第一行添加:cd“path to credentials file”,它就可以工作了。Rafa再次感谢。分配前引用的局部变量“creds”
通过添加creds=None
行得到解决,解决此错误后还需要更改目录。creds=None
行为空。