前提・実現したいこと
python 複数のファイルに記述したpython ファイルをexe化しようと考えていますが
exe化はできるのですが,exe化できたものを起動したら,コマンドプロンプトが立ち上がり,モジュールが見つからないと表示されコマンドプロンプトが消えます.
動作はデスクトップ上にあるExcelファイルから値を取得しグラフ化するプログラムです.
主なファイルは,matplollib 3.2.2 ,openpyxl 3.0.3 でPython 3.8.3
pyinstaller 4.2
pyinstaller-hooks-contrib 2020.11
またコマンドプロンプトに以下のコードで実行すると
pyinstaller --onefile --hidden-import=matplotlib --hidden-import=tkinter --hidden-import=numpy --hidden-import=openpyxl sample3.py
exe化はできるのですが,exe化できたものを起動したら,コマンドプロンプトが立ち上がり,モジュールが見つからないと表示されコマンドプロンプトが消えます.
しかし,pyinstaller sample3.pyで実行すると,
exe化はできるのですが,exe化できたものを起動したら,コマンドプロンプトが立ち上がりすぐに消えてしまいます.
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
python
1#sample3.py 2import tkinter as tk 3from tkinter import ttk 4from tkinter import filedialog 5from Text_box import Text_box_crsp,Text_box_crsp_ 6from Button import Create_Button_crsp_ 7from Label import Label_crsp 8import Make_Graph 9from Excel import Value 10 11def d_command(): 12 path = "C:\Users\○○\Desktop" 13 file_name = "Book1.xlsm" 14 X = Value(path,file_name,"A","ON") 15 Y = Value(path,file_name,"B","ON") 16 Make_Graph.Graph_sample(X,Y) 17 18#メインウィンドウの作成 19win = tk.Tk() 20 21win.geometry("{0}x{1}".format(1300,330)) 22win.title("Create Graph") 23 24#メインフレーム 25frm = ttk.Frame(win) 26frm.grid(column=0, row=0, sticky=tk.NSEW, padx=5, pady=10) 27 28folder_path = tk.StringVar() 29# labelの作成 30folder_label = Label_crsp(frm,"ファイルの指定",0,0,10,0) 31 32graph_label_file = Label_crsp(frm,"ファイル名",0,1,10,0) 33# boxの作成 34graph_box_file = Text_box_crsp(frm,1,1,tk.EW,0,5,"") 35 36defalut_bot = Create_Button_crsp_(frm,"ボタン",1,2,0,0,command=d_command) 37 38# 配置設定 39win.columnconfigure(0, weight=1) 40win.rowconfigure(0, weight=1) 41frm.columnconfigure(1, weight=1) 42win.mainloop()
python
1#tkinterのボタン Button.py 2import tkinter as tk 3from tkinter import ttk 4 5def Create_Button_crsp(frm,name,column,row,pady,padx): 6 Button = ttk.Button(frm, text=name) 7 Button.grid(column=column, row=row,pady=pady, padx=padx) 8 return Button 9 10def Create_Button_crsp_(frm,name,column,row,pady,padx,command): 11 Button = ttk.Button(frm, text=name,command=command) 12 Button.grid(column=column, row=row,pady=pady, padx=padx) 13 return Button
python
1#Label.py 2import tkinter as tk 3from tkinter import ttk 4 5def Label_crsp(frm,name,column,row,pady,padx): 6 label = ttk.Label(frm, text="{0}".format(name)) 7 # pady:上下の余白 8 label.grid(column=column, row=row, pady=pady, padx=padx) 9 return label
python
1#Text_box.py 2 3import tkinter as tk 4from tkinter import messagebox as mbox 5from tkinter import ttk 6 7def Text_box_crsp(win,column,row,position,pady,padx,initial_value): 8 text = ttk.Entry(win) 9 # colomn:行の位置,row:列の位置,sticky:位置揃え,padx:左右の余白 10 text.grid(column=column,row=row,sticky=position,pady=pady,padx=padx) 11 text.insert(tk.END, "{0}" .format(initial_value)) 12 return text
python
1#Excel.py 2from openpyxl import load_workbook 3from matplotlib import pyplot as plt 4import numpy as np 5 6def Value(path,file_name,point_row,Title): 7 book = load_workbook('{0}\{1}'.format(path,file_name)) 8 active_sheet = book.active 9 10 A = [ i.value for i in active_sheet[point_row] if i.value != None] 11 if Title=="ON": 12 A.pop(0) 13 else: 14 pass 15 return A
python
1#Make_Graph.py 2from matplotlib import pyplot as plt 3import numpy as np 4from matplotlib.ticker import * 5 6def Graph_sample(X,Y): 7 fig, ax = plt.subplots() 8 9 ax.plot(X,Y) 10 11 ax.grid() 12 13 plt.show() 14 return
試したこと
実行時に
pyinstaller --onefile --hidden-import=matplotlib --hidden-import=tkinter --hidden-import=numpy --hidden-import=openpyxl sample3.py
pyinstaller sample3.py --onefile
などを試しましたがうまくいきません.
またファイルを分けるのではなく,
全て同じファイルに記述した時でもうまくいきませんでした.
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー