前提・実現したいこと
tkinterを用いた簡易なグラフ描画ツールを、pyinstallerにてexe化しようとしていますが、
以下のエラーが生じてしまい、困っています。
・AttributeError: 'NoneType' object has no attribute 'get_filename'
・File "C:\Users\username\Anaconda3\lib\site-packages\PyInstaller\utils\hooks_init_.py", line 339, in get_module_file_attribute
raise ImportError
発生している問題・エラーメッセージ
C:\Users\username\Desktop>pyinstaller test.py --debug all
161 INFO: PyInstaller: 3.6
162 INFO: Python: 3.6.8 (conda)
''error部分抜粋''
Traceback (most recent call last):
File "C:\Users\username\Anaconda3\lib\site-packages\PyInstaller\utils\hooks_init_.py", line 321, in get_module_file_attribute
attr = loader.get_filename(package)
AttributeError: 'NoneType' object has no attribute 'get_filename'
During handling of the above exception, another exception occurred:
get_module_file_attribute('scipy')), location, "*.dll")
File "C:\Users\username\Anaconda3\lib\site-packages\PyInstaller\utils\hooks_init_.py", line 339, in get_module_file_attribute
raise ImportError
ImportError
該当のソースコード
python
1#!/usr/bin/env python 2# coding: utf-8 3 4import tkinter as tk 5from tkinter import ttk 6import tkinter.filedialog as fl 7import tkinter.messagebox as mb 8import numpy as np 9import matplotlib.pyplot as plt 10import pandas as pd 11 12 13######関数定義###### 14 15#ファイルpathの取得 16def button1_clicked(): 17 global filepath 18 fTyp = [("csv","*.csv")] 19 filepath = fl.askopenfilename(filetypes = fTyp,initialdir = "C:/Users/shunchan") 20# mb.showinfo('ファイル選択完了', csv) 21 22#終了ボタン 23def quit(): 24 root.destroy() 25 26#コンター図描画 27def plot_contourf(): 28 global filepath 29 30 #必要な変数の取得 31 lower_value=entry_lower.get() 32 upper_value=entry_upper.get() 33 Title=entry_title.get() 34 Xlabel=entry_Xlabel.get() 35 Ylabel=entry_Ylabel.get() 36 37 #csvファイルからデータを取得 38 df = pd.read_csv(filepath, header=None) 39 40 array=np.array(df.iloc[1:,1:]) 41 x=np.array(df.iloc[0,1:]) 42 y=np.array(df.iloc[1:,0]) 43 xx,yy=np.meshgrid(x,y) 44 45 fig, ax1 = plt.subplots(figsize=(8, 6)) 46 # 等高線を作成する。 47 contour = ax1.contourf(xx, yy, array) 48 ax1.set_title('Title') 49 ax1.set_xlabel('Xlabel') 50 ax1.set_ylabel('Xlabel') 51 contour = ax1.contourf(xx, yy, array) 52 fig.colorbar(contour) 53# plt.contourf(xx,yy,array, vmin=lower_value, vmax=upper_value,cmap='jet') 54# plt.title(Title) 55# plt.xlabel(Xlabel) 56# plt.ylabel(Ylabel) 57# cbar=plt.colorbar() 58# plt.show() 59 60# plt.savefig('figure.png') 61 62 63# fig = plt.figure() # Figureを作成 64# ax = fig.add_subplot(1,1,1) # Axesを作成 65 66 67 68######ウインドウのデザイン###### 69 70#メインウインドウ 71root=tk.Tk() 72# root.geometry("500x300") 73root.title("コンター図作成ツール") 74 75 76#frameの作成 77frame1=tk.LabelFrame(root,text="実行タブ",foreground="green") 78frame1.grid(row=0,columnspan=3,sticky="we") 79 80frame2=tk.LabelFrame(root,text="詳細タブ",foreground="green") 81frame2.grid(row=2,sticky="we") 82 83 84# canvas = FigureCanvasTkAgg(fig, root) 85# canvas.get_tk_widget().grid(row=1, column=0) 86 87 88# #frame1に表示する部品 89# message=tk.Label(frame1,text="ファイルを選択してください",width=30) 90# message.grid(row=0,column=0) 91 92blank=tk.Label(frame1,width=3) 93blank.grid(row=0,column=1) 94 95#frame1に表示する部品2 96button=tk.Button(frame1,text="select csv file",width=13,command=button1_clicked) 97button.grid(row=0,column=0) 98 99#frame1に表示する部品3 100button=tk.Button(frame1,text="plot",width=13,command=plot_contourf) 101button.grid(row=0,column=1) 102 103#frame1に表示する部品4 104button=tk.Button(frame1,text="quit",width=13,command=quit) 105button.grid(row=0,column=4) 106 107 108#frame2に表示する部品 109#下の説明 110text_title=tk.Label(frame2,text="コンターレンジ",width=20) 111text_title.grid(row=0,column=0,padx=5) 112 113text_row=tk.Label(frame2,text="グラフタイトル",width=20) 114text_row.grid(row=0,column=1,padx=5) 115 116text_column=tk.Label(frame2,text="X軸ラベル",width=20) 117text_column.grid(row=3,column=0,padx=5) 118 119text_a=tk.Label(frame2,text="Y軸ラベル",width=20) 120text_a.grid(row=3,column=1,padx=5) 121 122 123#入力フォーム 124entry_lower=tk.Entry(frame2,width=20) 125entry_lower.insert(tk.END,"0") 126entry_lower.grid(row=1,column=0,padx=5) 127 128entry_upper=tk.Entry(frame2,width=20) 129entry_upper.insert(tk.END,"100") 130entry_upper.grid(row=2,column=0,padx=5) 131 132 133entry_title=tk.Entry(frame2,width=20) 134entry_title.insert(tk.END,"title") 135entry_title.grid(row=1,column=1,padx=5,pady=5) 136 137entry_Xlabel=tk.Entry(frame2,width=20) 138entry_Xlabel.insert(tk.END,"X_label") 139entry_Xlabel.grid(row=4,column=0,padx=5,pady=5) 140 141entry_Ylabel=tk.Entry(frame2,width=20) 142entry_Ylabel.insert(tk.END,"Y_label") 143entry_Ylabel.grid(row=4,column=1,padx=5,pady=5) 144 145#データの区切り方を指定できるラジオボタンを作成 146frame3=tk.LabelFrame(frame2,text="CSVの区切り方",foreground="green") 147frame3.grid(row=5,column=0,sticky="we") 148 149var=tk.IntVar() 150var.set(0) 151 152radio_space=tk.Radiobutton(frame3,value=0,variable=var,text="スペース") 153radio_space.pack() 154radio_comma=tk.Radiobutton(frame3,value=1,variable=var,text="カンマ") 155radio_comma.pack() 156 157 158root.mainloop()
補足情報(FW/ツールのバージョンなど)
環境
python 3.6.8
pyinstaller 3.6
あなたの回答
tips
プレビュー