如何将一个模块导入主界面?

2024-04-16 15:08:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个模块

if __name__ == '__main__':
    do stuff...

成语。在

我想从另一个模块导入它,然后骗它运行代码。有办法吗?在

我要指出的是,由于我不想在这里讨论的原因,我无法更改导入模块中的代码。我需要以某种方式修改导入过程,以便导入时它的名称是main,可能使用ihook或类似的方法。在


Tags: 模块方法代码name名称ifmain过程
3条回答

将代码放入一个函数中,并从要导入它的模块中调用它。在

def stuff():
    ...

if __name__ == '__main__':
    stuff()

然后在模块中将其导入:

^{pr2}$

正如其他答案所指出的,这是个坏主意,你应该用其他方法来解决这个问题。在

不管怎样,Python是这样做的:

import runpy
result = runpy._run_module_as_main("your.module.name"))

有,执行脚本而不是导入它。但我认为这是一个极其老套的解决方案。在

然而,理想的模式是:

def do_stuff():
    ... stuff happens ...

if __name__ == '__main__':
    do_stuff()

这样你就可以:

^{pr2}$

编辑:澄清不能编辑模块代码后回答。在

我绝不会在任何生产代码中推荐这种方法,这是一种“自负风险使用”的解决方案。

import mymodule

with open(os.path.splitext(mymodule.__file__)[0] + ".py") as fh:
    exec fh.read()

相关问题 更多 >