【发布时间】:2020-02-16 09:32:52
【问题描述】:
我正在尝试使用 PyInstaller 将我的 .py 文件转换为 .exe 文件。这个过程很好。但是,当我尝试运行 .exe 文件时,程序提到它找不到“client_secret.json”。
我不确定如何在文件包中正确包含 JSON 文件,以便正确执行转换后的 .exe 文件。
我是 PyInstaller 的新手,所以请不要对我评价太苛刻:/
我已尝试将“client_secret.json”添加到 PALSheet.spec 的 .spec 文件中,但 .exe 文件(已更新)无法运行 [也是由于无法找到“client_secret.json”]。
这里是“PALSheet.py”的代码:
import tkinter
import gspread
from oauth2client.service_account import ServiceAccountCredentials
# use creds to create a client to interact with the Google Drive API and Google Sheets API
scope = 'https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive'
creds = ServiceAccountCredentials.from_json_keyfile_name('client_secret.json', scope)
client = gspread.authorize(creds)
# Find a workbook by name and open the first sheet
# Make sure you use the right name here.
sheet = client.open("PAL Tutoring Data SpreadSheet").sheet1
def ResetData():
student_entry.delete('0', 'end')
grade_entry.delete('0', 'end')
class_entry.delete('0', 'end')
topic_entry.delete('0', 'end')
def FindNextRow():
global next_row
next_row = ((len(sheet.col_values(int(1)))) + 1)
def InputData():
FindNextRow()
global next_row
sheet.update_cell(next_row, 1, student_entry.get())
sheet.update_cell(next_row, 2, grade_entry.get())
sheet.update_cell(next_row, 3, class_entry.get())
sheet.update_cell(next_row, 4, topic_entry.get())
student_entry.delete('0', 'end')
grade_entry.delete('0', 'end')
class_entry.delete('0', 'end')
topic_entry.delete('0', 'end')
window = tkinter.Tk()
window.title("PAL Data Input")
student_label = tkinter.Label(window, text = " Student Name: ")
student_label.grid(row = "2", column = "1")
student_entry = tkinter.Entry(window)
student_entry.grid(row = "2", column = "2")
grade_label = tkinter.Label(window, text = "Grade Level: ")
grade_label.grid(row = "3", column = "1")
grade_entry = tkinter.Entry(window)
grade_entry.grid(row = "3", column = "2")
class_label = tkinter.Label(window, text = "Math Class: ")
class_label.grid(row = "4", column = "1")
class_entry = tkinter.Entry(window)
class_entry.grid(row = "4", column = "2")
topic_label = tkinter.Label(window, text = " Problem Topic: ")
topic_label.grid(row = "5", column = "1")
topic_entry = tkinter.Entry(window)
topic_entry.grid(row = "5", column = "2")
process_button = tkinter.Button(window, text = "Update Sheet", command = InputData)
process_button.grid(row = "6", column = "2")
reset_button = tkinter.Button(window, text = "Reset Fields", command = ResetData)
reset_button.grid(row = "6", column = "1")
window.mainloop()
我将“PALSheet.py”转换为“PALSheet.exe”后,文件显示如下错误:
Traceback(最近一次调用最后一次): 文件“palsheet.py”,第 9 行,在 文件“site-packages\oauth2client\service_account.py”,第 219 行,在 from_json_keyfile_name FileNotFoundError:[Errno 2] 没有这样的文件或目录:'client_secret.json' [280] 执行脚本 PALSheet 失败
【问题讨论】:
标签: python json python-3.x pyinstaller