Python 尝试打开时未能执行
我和特金特一起工作。我正在尝试创建一个图形用户界面。我想让我的设备内的其他人进行测试。我正在使用pyinstaller使其成为.exe 我使用的命令:pyinstaller.exe--onefile--icon=Skugo.ico Beta.pyw 它构建了它和所有东西,但当我尝试打开它时,它会给出错误“检测到致命错误。无法执行脚本测试版。” 我还尝试使用自动py-to-exe。同样的事情发生在它建成后 我一直在寻找,一些人说这可能是由于他们的脚本,但没有任何错误,弹出在我的 我的剧本:Python 尝试打开时未能执行,python,tkinter,exe,Python,Tkinter,Exe,我和特金特一起工作。我正在尝试创建一个图形用户界面。我想让我的设备内的其他人进行测试。我正在使用pyinstaller使其成为.exe 我使用的命令:pyinstaller.exe--onefile--icon=Skugo.ico Beta.pyw 它构建了它和所有东西,但当我尝试打开它时,它会给出错误“检测到致命错误。无法执行脚本测试版。” 我还尝试使用自动py-to-exe。同样的事情发生在它建成后 我一直在寻找,一些人说这可能是由于他们的脚本,但没有任何错误,弹出在我的 我的剧本: fro
from tkinter import *
from tkinter import ttk
from tkinter import messagebox
import pandas as pd
from datetime import date
from datetime import timedelta
import csv
import os
class aSide(Tk):
def __init__(self):
Tk.__init__(self)
self.resizable(True, True)
window_height = 530
window_width = 705
screen_w = self.winfo_screenwidth()
screen_h = self.winfo_screenheight()
x = int((screen_w / 2) - (window_width / 2))
y = int((screen_h / 2) - (window_height / 2))
self.geometry("{}x{}+{}+{}".format(window_width, window_height, x, y))
self.iconbitmap('Skugo.ico')
self.title("Testing A-Side")
self.today = date.today()
self.yesterday = self.today - timedelta(days=1)
self.todayIsMonday = self.today - timedelta(days=3)
self.lead = Label(self, text='Lead', fg='Green', font=32)
self.lead.grid(row=1, column=1, columnspan=7, pady=5)
self.date = Label(self, text=self.today.strftime("%x"), fg='Blue', font=24)
self.date.grid(row=2, column=1, columnspan=7)
self.savetree = Button(self, text='Save Sheet', command=lambda: (self.savheet(), self.savecsvSheet()))
self.savetree.grid(row=1, column=1, columnspan=2, pady=5)
self.tree()
self.editbtn = Button(self, text='EDIT', fg='navy blue', command=self.edit)
self.editbtn.grid(row=5, column=2, columnspan=5, pady=5)
self.removebtn = Button(self, text='REMOVE', fg='red', command=self.removeTeammate)
self.removebtn.grid(row=5, column=2, columnspan=7, pady=10)
self.station = Label(self, text='Station #')
self.station.grid(row=8, column=1)
self.b_l = Label(self, text='Break--Lunch')
self.b_l.grid(row=8, column=2)
self.names = Label(self, text='Teammate')
self.names.grid(row=8, column=3)
self.start = Label(self, text='Start Date')
self.start.grid(row=8, column=4)
self.agency = Label(self, text='Agency')
self.agency.grid(row=8, column=5)
self.hw = Label(self, text='Hours Work')
self.hw.grid(row=8, column=6)
self.note = Label(self, text='Notes')
self.note.grid(row=8, column=7)
self.entStation = Entry(self, width=3)
self.entStation.grid(row=9, column=1)
self.entb_l = Entry(self, width=4)
self.entb_l.grid(row=9, column=2)
self.entNames = Entry(self)
self.entNames.grid(row=9, column=3)
self.entStart = Entry(self, width=10)
self.entStart.grid(row=9, column=4)
self.entAgency = Entry(self, width=10)
self.entAgency.grid(row=9, column=5)
self.enthw = Entry(self, width=3)
self.enthw.grid(row=9, column=6)
self.entNote = Entry(self)
self.entNote.grid(row=9, column=7)
self.addteammate = Button(self, text='ADD TEAMAMTE', fg='green', command=self.addTeammate)
self.addteammate.grid(row=10, column=1, columnspan=25, pady=20)
self.saveSheet()
self.savecsvSheet()
def tree(self):
self.my_tree = ttk.Treeview(self)
self.my_tree['columns'] = (
"Station #", "Break_Lunch", "Teammate", "Start Date", "Agency", "Hours Work", "Notes")
self.my_tree.column('#0', width=0, stretch=NO)
self.my_tree.column('Station #', anchor=CENTER, width=80)
self.my_tree.column('Break_Lunch', anchor=CENTER, width=80)
self.my_tree.column('Teammate', anchor=CENTER, width=120)
self.my_tree.column('Start Date', anchor=CENTER, width=80)
self.my_tree.column('Agency', anchor=CENTER, width=120)
self.my_tree.column('Hours Work', anchor=CENTER, width=80)
self.my_tree.column('Notes', anchor=CENTER, width=120)
self.my_tree.heading('#0', text='', anchor=CENTER)
self.my_tree.heading('Station #', text='Station #', anchor=CENTER)
self.my_tree.heading('Break_Lunch', text='Break--Lunch', anchor=CENTER)
self.my_tree.heading('Teammate', text='Teammates', anchor=CENTER)
self.my_tree.heading('Start Date', text='Start Date', anchor=CENTER)
self.my_tree.heading('Agency', text='Agency', anchor=CENTER)
self.my_tree.heading('Hours Work', text='Hours Work', anchor=CENTER)
self.my_tree.heading('Notes', text='Notes', anchor=CENTER)
self.my_tree.grid(row=4, column=1, columnspan=7, pady=10, padx=10)
os.chdir('Csv Files')
self.path = os.getcwd()
if date.today().weekday() == 0:
with open('Testing A-Side ' + self.todayIsMonday.strftime("%m" + '.' + "%d" + '.' + "%Y") + '.csv',
newline='')as file:
reader = csv.DictReader(file)
for col in reader:
station = col['Station #']
b_l = col['Break_Lunch']
name = col['Teammate']
start = col['Start Date']
agency = col['Agency']
hw = col['Hours Work']
note = col['Notes']
self.my_tree.insert('', 0, values=(station, b_l, name, start, agency, hw, note))
elif date.today().weekday() != 0:
with open("Testing A-Side " + self.yesterday.strftime("%m" + '.' + "%d" + '.' + "%Y") + ".csv",
newline='')as f:
reader = csv.DictReader(f)
for col in reader:
station = col['Station #']
b_l = col['Break_Lunch']
name = col['Teammate']
start = col['Start Date']
agency = col['Agency']
hw = col['Hours Work']
note = col['Notes']
self.my_tree.insert('', 0, values=(station, b_l, name, start, agency, hw, note))
self.parent = os.path.dirname(self.path)
os.chdir(self.parent)
def saveSheet(self):
# self.prod_total = Label(self, text='Production Total')
# self.prod_total.grid(row=1, column=6, columnspan=7)
# self.total = Entry(self, width=5)
# self.total.grid(row=2, column=6, columnspan=7)
# self.save_total = Button(self, text='Save Production Total', command=self.saveProdTotal)
# self.save_total.grid(row=3, column=6, columnspan=7, pady=5)
os.chdir('Teammate Sheet')
self.path = os.getcwd()
self.excolumns = ["Station #", "Break_Lunch", "Teammate", "Start Date", "Agency", "Hours Work",
"Notes", ] # , "Production Total"]
self.info = [self.my_tree.item(item)['values'] for item in self.my_tree.get_children()]
self.df = pd.DataFrame(self.info, columns=self.excolumns)
self.df.to_excel("Testing A-Side " + self.today.strftime("%m" + '.' + "%d" + '.' + "%Y") + ".xlsx",
engine='xlsxwriter', index=False)
self.parent = os.path.dirname(self.path)
os.chdir(self.parent)
def savecsvSheet(self):
os.chdir('Csv Files')
self.path1 = os.getcwd()
self.excolumns1 = ["Station #", "Break_Lunch", "Teammate", "Start Date", "Agency", "Hours Work",
"Notes"] # , "Production Total"]
self.info1 = [self.my_tree.item(item)['values'] for item in self.my_tree.get_children()]
self.df1 = pd.DataFrame(self.info1, columns=self.excolumns1)
self.df1.to_csv("Testing A-Side " + self.today.strftime("%m" + '.' + "%d" + '.' + "%Y") + ".csv", index=False)
self.parent1 = os.path.dirname(self.path1)
os.chdir(self.parent1)
def addTeammate(self):
os.chdir('Csv Files')
self.path4 = os.getcwd()
with open('Testing A-Side ' + self.today.strftime("%m" + '.' + "%d" + '.' + "%Y") + '.csv', 'a',
newline='')as file:
w = csv.writer(file)
w.writerow([self.entStation.get(), self.entb_l.get(), self.entNames.get(), self.entStart.get(),
self.entAgency.get(),
self.enthw.get(), self.entNote.get()])
self.my_tree.insert('', 0, values=(
self.entStation.get(), self.entb_l.get(), self.entNames.get(), self.entStart.get(), self.entAgency.get(),
self.enthw.get(), self.entNote.get()))
self.parent4 = os.path.dirname(self.path4)
os.chdir(self.parent4)
self.entStation.delete(0, END)
self.entb_l.delete(0, END)
self.entNames.delete(0, END)
self.entStart.delete(0, END)
self.entAgency.delete(0, END)
self.enthw.delete(0, END)
self.entNote.delete(0, END)
self.entStation.focus_set()
self.savecsvSheet()
def edit(self):
self.updateteammate = Button(self, text='UPDATE', fg='navy blue', command=self.updateSheet)
self.updateteammate.grid(row=11, column=1, columnspan=7)
self.entStation.delete(0, END)
self.entb_l.delete(0, END)
self.entNames.delete(0, END)
self.entStart.delete(0, END)
self.entAgency.delete(0, END)
self.enthw.delete(0, END)
self.entNote.delete(0, END)
self.select = self.my_tree.focus()
self.val = self.my_tree.item(self.select, 'values')
self.entStation.insert(0, self.val[0])
self.entb_l.insert(0, self.val[1])
self.entNames.insert(0, self.val[2])
self.entStart.insert(0, self.val[3])
self.entAgency.insert(0, self.val[4])
self.enthw.insert(0, self.val[5])
self.entNote.insert(0, self.val[6])
def updateSheet(self):
self.select = self.my_tree.focus()
self.my_tree.item(self.select, text='', values=(
self.entStation.get(), self.entb_l.get(), self.entNames.get(), self.entStart.get(), self.entAgency.get(),
self.enthw.get(), self.entNote.get()))
os.chdir('Csv Files')
self.path2 = os.getcwd()
with open('Testing A-Side ' + self.today.strftime("%m" + '.' + "%d" + '.' + "%Y") + '.csv', 'r')as read:
reader = csv.DictReader(read)
data = list(reader)
with open('Testing A-Side ' + self.today.strftime("%m" + '.' + "%d" + '.' + "%Y") + '.csv', 'w',
newline='')as write:
headers = ["Station #", "Break_Lunch", "Teammate", "Start Date", "Agency", "Hours Work", "Notes"]
writer = csv.DictWriter(write, fieldnames=headers)
writer.writeheader()
for row in data:
if row['Teammate'] == self.entNames.get():
row['Station #'] = self.entStation.get()
row['Break_Lunch'] = self.entb_l.get()
row['Start Date'] = self.entStart.get()
row['Agency'] = self.entAgency.get()
row['Hours Work'] = self.enthw.get()
row['Notes'] = self.entNote.get()
writer.writerow(row)
messagebox.showinfo("Data Updated!", self.entNames.get() + " data has been updated.")
self.parent2 = os.path.dirname(self.path)
os.chdir(self.parent2)
self.entStation.delete(0, END)
self.entb_l.delete(0, END)
self.entNames.delete(0, END)
self.entStart.delete(0, END)
self.entAgency.delete(0, END)
self.enthw.delete(0, END)
self.entNote.delete(0, END)
self.entStation.focus_set()
self.updateteammate.grid_remove()
self.savecsvSheet()
def removeTeammate(self):
self.selected = self.my_tree.focus()
self.values = self.my_tree.item(self.selected, 'values')
os.chdir('Csv Files')
self.path3 = os.getcwd()
with open('Testing A-Side ' + self.today.strftime("%m" + '.' + "%d" + '.' + "%Y") + '.csv', 'r') as read:
reader = csv.DictReader(read)
data = list(reader)
with open('Testing A-Side ' + self.today.strftime("%m" + '.' + "%d" + '.' + "%Y") + '.csv',
'w', newline='')as write:
headers = ["Station #", "Break_Lunch", "Teammate", "Start Date", "Agency", "Hours Work", "Notes"]
writer = csv.DictWriter(write, fieldnames=headers)
writer.writeheader()
for row in data:
if row['Teammate'] == self.entNames.get():
continue
writer.writerow(row)
self.parent3 = os.path.dirname(self.path3)
os.chdir(self.parent3)
with open('Removed.csv', 'a', newline='')as r:
w = csv.writer(r)
w.writerow([self.values[2], self.values[3], self.values[4]])
messagebox.showinfo("Data Removed!", self.entNames.get() + "'s data has been removed.")
self.my_tree.delete(self.selected)
self.entStation.delete(0, END)
self.entb_l.delete(0, END)
self.entNames.delete(0, END)
self.entStart.delete(0, END)
self.entAgency.delete(0, END)
self.enthw.delete(0, END)
self.entNote.delete(0, END)
self.entStation.focus_set()
self.updateteammate.grid_remove()
self.savecsvSheet()
if __name__ == "__main__":
app = aSide()
app.mainloop()
我遇到的问题是,我的熊猫模块显然没有安装。我只是继续复制我的脚本,为它创建了一个全新的目录并粘贴到那里。然后我又安装了熊猫。当我通过命令提示符运行我的.exe文件时,它会给我错误,说找不到pandas模块
我要感谢他为我解决问题提供的帮助。这可能是许多致命错误。但是,如果脚本在转换为.exe之前运行良好,则可能是缺少包。有一次,我遇到了一个包的一部分问题,它没有自动包含在pyinstaller中。如果将命令更改为:
pyinstaller.exe--hidden import pkg_resources.py2_warn Beta.pyw-F
,它是否工作?@MartinWettstein它也会做同样的事情:(那么可能是文件?脚本需要文件(例如Skugo.ico)运行。如果这些文件与.exe不在同一文件夹中,它可能会崩溃。您可以将它们作为附加资源添加到pyinstaller中,这样您就不需要分发这些文件。我将所需的所有文件/文件夹都放在同一目录中。我使用auto py to exe将我的其他文件夹添加到my.exe中,结果仍然相同。当这种情况发生在我身上:将其更改为.py
,再次转换,然后在控制台中运行它。然后,在控制台中获得错误的回溯,并可能找到问题所在。