2

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

Kraay89
  • 919
  • 1
  • 7
  • 19
Shiro Gin
  • 19
  • 1
  • 6

3 Answers3

0

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.

Tiago Santos
  • 726
  • 6
  • 13
-1

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.

Shiro Gin
  • 19
  • 1
  • 6
-2

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.

AD WAN
  • 1,414
  • 2
  • 15
  • 28
  • You can comment if you need any assistance. – AD WAN Aug 09 '19 at 13:06
  • 1
    sorry I didn't get what you mean. I did not include any icon (only used default icon first). can you tell me in details please? Sorry Im really noob at this – Shiro Gin Aug 09 '19 at 15:45