Ho avuto a che fare con questo per giorni e ora spero di trovare qualche aiuto. Ho sviluppato un'applicazione GUI con moduli importati tkinter, numpy, scipy, matplotlib, che funziona bene in Python stesso. Dopo aver convertito in un file * .exe, tutto funziona come previsto, ma NON la sezione matplotlib. Quando premo il mio pulsante-plot definito, * .exe si chiude semplicemente e non mostra alcun grafico. Quindi ho pensato di fare un esempio minimalista, in cui ho semplicemente tracciato una funzione sin e sto affrontando lo stesso problema: Funziona perfettamente in python, quando lo converti in un file * .exe si blocca quando si preme il pulsante di stampa. L'esempio minimalista è qui:cx_freeze convertita GUI-app (tkinter) si blocca dopo aver premuto il pulsante di trama
import tkinter as tk
import matplotlib.pyplot as plt
import numpy as np
class MainWindow(tk.Frame):
def __init__(self):
tk.Frame.__init__(self,bg='#9C9C9C',relief="flat", bd=10)
self.place(width=x,height=y)
self.create_widgets()
def function(self):
datax = np.arange(-50,50,0.1)
datay = np.sin(datax)
plt.plot(datax,datay)
plt.show()
def create_widgets(self):
plot = tk.Button(self, text='PLOT', command=self.function)
plot.pack()
x,y=120,300
root=tk.Tk()
root.geometry(str(x)+"x"+str(y))
app = MainWindow()
app.mainloop()
E vedere il mio corrispondente "setup.py" per la conversione con cx_freeze.
import cx_Freeze
import matplotlib
import sys
import numpy
import tkinter
base = None
if sys.platform == "win32":
base = "Win32GUI"
executables = [cx_Freeze.Executable("test.py", base=base)]
build_exe_options = {"includes": ["matplotlib.backends.backend_tkagg","matplotlib.pyplot",
"tkinter.filedialog","numpy"],
"include_files":[(matplotlib.get_data_path(), "mpl-data")],
"excludes":[],
}
cx_Freeze.setup(
name = "test it",
options = {"build_exe": build_exe_options},
version = "1.0",
description = "I test it",
executables = executables)
Tutte le idee che potrebbero risolvere il problema sono molto apprezzate. Sto lavorando su una macchina Windows10 a 64 bit e sto usando la distribuzione WinPython con Python 3.4.3.
Sarebbe interessante sapere se questo problema riguarda Windows 10 o se lo stesso accade con altre versioni di Windows. –
Ah, scusa, ho dimenticato di dirlo. Lo stesso problema è accaduto con la stessa distribuzione di WinPython su un computer con Windows 7 a 64 bit. – PuseMuckeL
Ho appena provato questo su XP a 32 bit senza problemi, lo proverò su 64 bit Win7 in seguito –