py to exe : failed to execute script pyi_rth_win32comgenpy

风流意气都作罢 提交于 2021-01-27 21:54:37

问题


I'm creating a simple calculation program using tkinter module and want to convert to exe as I want it to be executable at any pc. But somehow the error message show (failed to execute script pyi_rth_win32comgenpy).

I've try used pyinstaller ( cmd and the one on GitHub at : https://github.com/brentvollebregt/auto-py-to-exe) but to no avail. I also try using both types of python file (.py and .pyw)

from tkinter import *
from tkinter.filedialog import askopenfilename
import pandas as pd
from tkinter import messagebox
from pandastable import Table, TableModel

class Window(Frame):

    def __init__(self, master =None):
        Frame.__init__(self, master)

        self.master = master
        self.init_window()

    def init_window(self):

        self.master.title('GUI')
        self.pack(fill=BOTH, expand=1)

        quitButton = Button(self, text='quit', command=self.client_exit)
        quitButton.place(x=0, y=230)

        # fileButton = Button(self, text='Browse Data Set', command=self.import_data)
        # fileButton.place(x=150, y=0)

        fileButton = Button(self, text='SBO', command=self.sbo)
        fileButton.place(x=200, y=50)

        fileButton = Button(self, text='CBO', command=self.cbo)
        fileButton.place(x=150, y=50)


        # menu = Menu(self.master)
        # self.master.config(menu=menu)
        # 
        # file = Menu(menu)
        # file.add_command(label='Save',command=self.client_exit)
        # file.add_command(label='Exit', command= self.client_exit)
        # menu.add_cascade(label='File', menu=file)
        # 
        # edit = Menu(menu)
        # edit.add_command(label='Undo')
        # menu.add_cascade(label='Edit', menu=edit)

    def client_exit(self):
        exit()

    # def import_data(self):
    #
    #     csv_file_path = askopenfilename()
    #     # print(csv_file_path)
    #     df = pd.read_excel(csv_file_path)
    #     return df

    def sbo(self):

        csv_file_path = askopenfilename()
        df = pd.read_excel(csv_file_path)

        data = df.drop(df.index[0])  # remove first row



        data['BOVal%'] = data['BOVal%'].astype(str)  # convert to string
        data['BOQty%'] = data['BOQty%'].astype(str)
        data['CustomerPONo'] = data['CustomerPONo'].astype(str)
        data['OrdNo'] = data['OrdNo'].astype(str)
        data['VendorNo'] = data['VendorNo'].astype(str)

        pivot = data.pivot_table(index='Style', aggfunc='sum')  # first pivot
        pivoted = pd.DataFrame(pivot.to_records())  # flattened
        pivoted = pivoted.sort_values(by=['BOVal'], ascending=False)  # sort largest to smallest

        pivoted['Ranking'] = range(1, len(pivoted) + 1)  # Ranking

        cols = pivoted.columns.tolist()
        cols = cols[-1:] + cols[:-1]
        pivoted = pivoted[cols]
        pivoted = pivoted.set_index('Ranking')

        col = df.columns.tolist()
        col = (col[22:23] + col[15:17] + col[:14] + col[17:22] + col[23:37])  # rearrange column
        data = df[col]

        data = data.sort_values(by=['BOVal'], ascending=False)  # sort value

        data['Ranking'] = range(1, len(data) + 1)  # Set rank
        colm = data.columns.tolist()
        colm = colm[-1:] + colm[:-1]  # rearrange rank column
        data = data[colm]

        data = data.set_index('Ranking')

        # sumboval = data['BOVal'].sum()
        # sumboqty = data['BOQty'].sum()

        # rounded = sumboval.round()

        dates = data['SnapShotDate']
        # print(dates)
        dates = dates.iloc[1].strftime('%d%m%Y')

        sos = data['SOS']
        sos = sos[2]



        result = pivoted.iloc[:10, :3]

        # Create a Pandas Excel writer using XlsxWriter as the engine.
        writer = pd.ExcelWriter('%s SBO %s .xlsx' % (sos, dates), engine='xlsxwriter')

        # Write each dataframe to a different worksheet.
        result.to_excel(writer, sheet_name='pivot')
        df.to_excel(writer, sheet_name=dates)
        data.to_excel(writer, sheet_name='SBO')

        # Close the Pandas Excel writer and output the Excel file.
        writer.save()

        messagebox.showinfo("Note", "Calculation Completed")

    def cbo(self):

        csv_file_path = askopenfilename()
        Stylemat = askopenfilename()
        df = pd.read_excel(csv_file_path)
        sm = pd.read_excel(Stylemat)

        df = df.drop(df.index[0])
        df.insert(loc=8, column='PH', value=['' for i in range(df.shape[0])])
        df.insert(loc=9, column='Site', value=['' for i in range(df.shape[0])])

        df['Region'] = df['Region'].fillna('"NA"')

        df['S&OP Style Aggrt'] = df['S&OP Style Aggrt'].astype(str)
        sm['Style'] = sm['Style'].astype(str)


        dates = df['Date_Rp']
        # print(dates)
        dates = dates.iloc[1]
        w = list(dates)
        w[1] = '-'
        w[3] = '-'
        temp = w[0]
        w[0] = w[2]
        w[2] = temp
        dates = "".join(w)


        rowcount = len(df)
        rowstyle = len(sm)

        i = 0
        j = 0
        Style = []

        for i in range(rowcount):

            for j in range(rowstyle):

                if df.iloc[i, 7] == sm.iloc[j, 0]:
                    df.iloc[i, 8] = 'Horizon'
                    df.iloc[i, 9] = sm.iloc[j, 2]



        table = pd.pivot_table(df[df.PH == 'Horizon'], index='S&OP Style Aggrt', columns='Region',
                               values='Net CBO Value', aggfunc='sum')

        table['Grand Total'] = table.sum(axis=1)

        table = table.sort_values(by=['Grand Total'], ascending=False)

        table['Ranking'] = range(1, len(table) + 1)

        # Create a Pandas Excel writer using XlsxWriter as the engine.
        writer = pd.ExcelWriter('CBO %s .xlsx' % dates, engine='xlsxwriter')

        # Write each dataframe to a different worksheet.
        table.to_excel(writer, sheet_name='pivot')
        df.to_excel(writer, sheet_name=dates)
        sm.to_excel(writer, sheet_name='StyleMat')

        # Close the Pandas Excel writer and output the Excel file.
        writer.save()

        messagebox.showinfo("Note", "Calculation Completed")


root = Tk()
root.geometry('400x300')

app = Window(root)

root.mainloop()

I'd like to know how to find the main reason for this error and where to look for it, is it either my scripting method is incorrect or is there any additional file or module that I need. Appreciate in advance for your help. Thank you


回答1:


I uninstalled everything related to win32 (pypiwin32, pywin32, pywin32-ctypes, pywinpty) and then installed again and magically it worked.

Took the idea from here and here.




回答2:


this is quite late, but the answer to that issue is just the py to exe cannot execute on numpy 1.17. after downgrade to numpy 1.16, the program can run normally.




回答3:


You are getting this error failed to execute script pyi_rth_win32comgenpy as result of not including the images you used for you icons and labels

I included images of icon, Question mark and the title

copy this images and include it the directory you have your pyi_rth_win32comgenpy executable.



来源:https://stackoverflow.com/questions/57425401/py-to-exe-failed-to-execute-script-pyi-rth-win32comgenpy

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!