相关疑难解决方法(0)

按下plot-Button后,cx_freeze转换的GUI-app(tkinter)崩溃

我几天来一直在处理这个问题,希望得到一些帮助.我开发了一个带有导入模块的GUI应用程序tkinter,numpy,scipy,matplotlib,它在python本身运行良好.转换为*.exe后,一切都按预期工作,但不是matplotlib部分.当我按下我定义的情节按钮时,*.exe只会关闭并且不显示任何情节.所以我想做一个简约的例子,我简单地绘制一个sin函数并且我面临同样的问题:在python中完美工作,当将它转换为*.exe时,它在按下情节按钮时崩溃.简约的例子在这里:

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()
Run Code Online (Sandbox Code Playgroud)

并查看我的相应"setup.py"以使用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":[],
                    } …
Run Code Online (Sandbox Code Playgroud)

python tkinter matplotlib cx-freeze python-3.x

10
推荐指数
2
解决办法
8521
查看次数

无法在python可执行文件上加载mkl_intel_thread.dll

我正在尝试创建一个在Windows上运行但不安装python的可执行python程序,为此,我正在使用cx_Freeze。但是我收到以下错误:“无法加载mkl_intel_thread.dll”

在安装了python(miniconda3)的PC上,我使用cx_Freeze构建了可执行文件,当我运行该可执行文件时,我也会得到“无法加载mkl_intel_thread.dll”的信息。我通过转到python文件夹Library \ bin修复了此问题,并将mkl_intel_thread.dll文件复制到了放置可执行文件的位置。问题是,将整个文件夹移动到另一台PC(未安装python)时,即使mkl_intel_thread.dll位于该文件夹中,也会再次出现此错误。

我要分发的文件(plot.py):

import matplotlib.pyplot as plt

a = [0, 1, 2]
b = [0, 2, 0]
plt.fill(a, b, 'b')
plt.show()
Run Code Online (Sandbox Code Playgroud)

cx_Freeze设置文件(setup.py):

import cx_Freeze
import sys
import matplotlib
import numpy
import os

os.environ['TCL_LIBRARY'] = "C:\\Miniconda3\\tcl\\tcl8.6"
os.environ['TK_LIBRARY'] = "C:\\Miniconda3\\tcl\\tk8.6"


executables = [cx_Freeze.Executable("plot.py")]


build_exe_options = {"includes":['numpy.core._methods',
        'numpy.lib.format', 'matplotlib.backends.backend_tkagg']}

cx_Freeze.setup(
    name = "script",
    options = {"build_exe": build_exe_options},
    version = "0.0",
    description = "A basic example",
    executables = executables)
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib intel-mkl cx-freeze

4
推荐指数
1
解决办法
3588
查看次数

标签 统计

cx-freeze ×2

matplotlib ×2

python ×2

intel-mkl ×1

numpy ×1

python-3.x ×1

tkinter ×1