2024-05-16 07:09:38 发布
网友
我有一个模块
if __name__ == '__main__': do stuff...
成语。在
我想从另一个模块导入它,然后骗它运行代码。有办法吗?在
我要指出的是,由于我不想在这里讨论的原因,我无法更改导入模块中的代码。我需要以某种方式修改导入过程,以便导入时它的名称是main,可能使用ihook或类似的方法。在
将代码放入一个函数中,并从要导入它的模块中调用它。在
def stuff(): ... if __name__ == '__main__': stuff()
然后在模块中将其导入:
正如其他答案所指出的,这是个坏主意,你应该用其他方法来解决这个问题。在
不管怎样,Python是这样做的:
import runpy result = runpy._run_module_as_main("your.module.name"))
有,执行脚本而不是导入它。但我认为这是一个极其老套的解决方案。在
然而,理想的模式是:
def do_stuff(): ... stuff happens ... if __name__ == '__main__': do_stuff()
这样你就可以:
编辑:澄清不能编辑模块代码后回答。在
我绝不会在任何生产代码中推荐这种方法,这是一种“自负风险使用”的解决方案。
import mymodule with open(os.path.splitext(mymodule.__file__)[0] + ".py") as fh: exec fh.read()
将代码放入一个函数中,并从要导入它的模块中调用它。在
然后在模块中将其导入:
^{pr2}$正如其他答案所指出的,这是个坏主意,你应该用其他方法来解决这个问题。在
不管怎样,Python是这样做的:
有,执行脚本而不是导入它。但我认为这是一个极其老套的解决方案。在
然而,理想的模式是:
这样你就可以:
^{pr2}$编辑:澄清不能编辑模块代码后回答。在
我绝不会在任何生产代码中推荐这种方法,这是一种“自负风险使用”的解决方案。
相关问题 更多 >
编程相关推荐