在类定义处从另一个调用python脚本失败

在类定义处从另一个调用python脚本失败,python,exec,Python,Exec,我有一个名为insertPrintCode.py的脚本,它可以自己工作。 我想使用另一个python脚本调用它 def main(): execfile("insertPrintCode.py") def execfile(filename): exec(compile(open(filename).read(), filename, 'exec')) 首次使用 newSearch = FileSearch() 与 NameError:未定义全局名称“FileSearch”

我有一个名为
insertPrintCode.py
的脚本,它可以自己工作。 我想使用另一个python脚本调用它

def main():
    execfile("insertPrintCode.py")

def execfile(filename):
    exec(compile(open(filename).read(), filename, 'exec'))
首次使用

newSearch = FileSearch()

NameError:未定义全局名称“FileSearch”


FileSearch是在同一个文件中定义的类。

首先,为什么要定义自己的
execfile
而不是使用?为什么要显式地调用
compile
,而不是只调用
exec
来编译源代码?其次,为什么要首先使用
execfile
,而不是只调用
import insertPrintCode
(或从insertPrintCode import*导入
)或在子流程中运行它?在某些情况下,
exec
是您想要的,但它们并不常见,如果您没有立即得到可靠的答案,您的答案可能不是其中之一。第三,如果您希望我们调试您的问题,您需要为我们提供
insertPrintCode.py
(或者更好的是,精简版)的代码,不要让我们猜测您可能做错了什么。如果直接在命令行上执行,
insertPrintCode.py
是否独立运行?文件是否独立运行。它就是这样设计的<代码>执行文件
在Python3.x中不可用,我将其用作缩写。我倒不如给它取个不同的名字。如果文件没有可调用的函数,则使用
import
没有多大意义。我可以将所有代码放在
main()
中,并用输入加载,但这只是一种解决方法。