【发布时间】:2019-07-18 19:18:06
【问题描述】:
我正在制作一个适用于 .py 文件的插件系统。当我使用该插件(.py 文件)执行 exec() 并且它具有函数或变量时,它会给出 NameError。
NameError:名称“editor_nf”未定义
我已经用谷歌搜索过了,但没有找到任何对我有帮助的东西。
我只做了:
plugin = open("plugin.py","r").read()
exec(plugin)
plugin.py 文件是:
import tkinter as tk
def editor_nf():
enf = tk.Tk()
enf.title("New file")
enf.config(bg="white")
enf.geometry("500x500")
enf.mainloop()
def editor():
editor = tk.Tk()
editor.title("Website Editor")
editor.config(bg="white")
editor.geometry("1400x700")
editor_nf_btn = tk.Button(editor,text="New file",bg="gray",fg="black",font="Arial",command=editor_nf)
editor_nf_btn.grid(row=0,column=0)
editor.mainloop()
editor()
所以我希望它与函数一起使用,以便人们可以创建 WORKING 函数。
我不希望它显示:
NameError:名称“editor_nf”未定义
【问题讨论】:
-
import plugin有问题吗?另外,请注意,您可以动态执行诸如__import__(<module_path>)之类的导入。 -
@dcg 不,因为我希望每个人都创建插件并上传它们,这意味着如果我这样做,我需要每次都更新它,如果将来有 10 万人制作插件,那不会不行。
-
它给出了一个 NameError 显示完整的错误信息。
-
@JohnGordon 已编辑
-
@crowdzer 我明白了,您可以使用函数
__import__(<module_path>)从给定位置导入所有插件。