如何解决Matplotlib在独立ExePython文件中的用法
我无法通过Python脚本创建有效的 exe 文件。我能够将其范围缩小到matplotlib的用法,但是我不知道如何解决。
我使用pyinstaller --onefile myScript.py
命令创建 exe 文件。 exe 是使用一些“忽略的”导入创建的,例如:
信息:Matplotlib后端“ GTK3Agg”:被忽略 后端Gtk3Agg需要开罗
当我运行 exe 时,会出现一个命令窗口,提示错误,然后终止自身:
错误:运行时错误找不到matplotlib数据文件
如果我从Python终端运行代码,一切正常。 如果删除matplotlib并绘制与图形相关的行,则会正确创建 exe 。
有些(pyinstaller and matplotlib - error while executring .exe)声称解决方案是更新pyinstaller。我做到了,但没有帮助。
有人建议不要使用plt
(Python Matplotlib runtime error upon closing the console),但是我无法使subplot
函数正常工作。
我觉得此链接(http://www.py2exe.org/index.cgi/MatPlotLib)是相关的,但是我不知道我到底需要做什么。我尝试时遇到其他错误。
这是我的代码:
import tkinter as tk
import tkinter.ttk as ttk
import matplotlib.pyplot as plt
class myApp(tk.Frame):
def __init__(self,parent,*args,**kwargs):
tk.Frame.__init__(self,**kwargs)
self.parent = parent
myFrame = ttk.LabelFrame(self.parent,text="FRAME",borderwidth=5)
myFrame.grid(row=0,column=2,padx=5,pady=5,sticky='NS')
myButton = ttk.Button(myFrame,width=12,text="SHOW GRAPH",command=self.showGraph) .grid(row=0,column=1,sticky=tk.S)
def showGraph(self):
fig,axs = plt.subplots(2,3)
plt.show(block=False)
def main(root):
app = myApp(root)
root.wm_title("MyApp")
root.mainloop()
if __name__ == "__main__":
root = tk.Tk()
main(root)
else:
pass
注意:我正在Windows 10(pip版本20.2.2)上运行Python 3.8.3。
解决方法
如果您使用.spec文件,则必须在我的文件中添加它以消除该错误:
from PyInstaller.utils.hooks import exec_statement
mpl_data_dir = exec_statement("import matplotlib; print(matplotlib._get_data_path())")
datas=[(mpl_data_dir,'matplotlib\\mpl-data')]
希望有帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。