如何从没有定义“defmain”的Python文件中导入main函数?

2024-04-26 04:53:49 发布

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

我正在编写一个Python(3.5)模块,其中我想利用一个开源项目中现有的Python模块。我要导入的模块包含:

  • 几个功能
  • if __name__ == '__main__':指令

但不包含def main(args)函数。你知道吗

因为没有实际的main函数,我无法通过import module导入它并将其用作module.main()。虽然我确实找到了通过命令os.system()subprocess.Popen()分别作为脚本执行的选项,但实际上我正在寻找一种方法,使此调用成为代码的一个组成部分。你知道吗

我知道我可以自己在原始代码中添加def main()部分,但是因为它来自一个开源项目,所以我正在寻找保持它不变的方法,这样如果它被更新,我就不需要自己维护它了。你知道吗

我也经历过其他非常类似的问题,比如thisthis,它们不能解决我的问题。This answer给我一种感觉,我正在努力做的事情并不琐碎。你知道吗

有什么办法吗?你知道吗


Tags: 模块项目方法函数代码name功能利用
1条回答
网友
1楼 · 发布于 2024-04-26 04:53:49

当您第一次import一个模块时(区别于导入函数),该模块中的所有代码都会执行。这意味着函数被定义,全局变量被定义,等等。我们编写if __name__ == "__main__":块的原因是当导入模块时,代码不会执行(它只执行if name == "main")。如果您只是删除if __name__ == "__main__":行并修复缩进,那么在导入模块时将执行该代码。以这个模块hello.py为例:

def hello_world():
    print("Hello world")
if __name__ == "__main__":
    hello_world()

如果我们导入:

import hello
hello_world()

下面的代码将执行与本例相同的操作,其中第一个模块将再次运行你好,派瑞地址:

def hello_world():
    print("hello world")
hello_world()

要执行的模块:

import hello

我建议你不要这样做,但你真的应该编辑,包括一个主要功能。你知道吗

相关问题 更多 >