重新启动main.py而没有循环导入错误

时间:2020-06-11 03:54:39

标签: python

我正在尝试在程序完成运行后重新启动main.py。但是,当我进入最后一个文件(unlock.py)时,将其放在脚本的末尾:

from main import *

main()

我收到一个循环导入错误。我不确定是否可以解决此问题,因此如果有人知道,将非常感谢您的帮助。如有任何疑问,请随时提问。

2 个答案:

答案 0 :(得分:1)

您可以使用execv模块的os方法:

import os
import sys

os.execv(__file__, sys.argv)

如果遇到任何权限错误:

os.execv(sys.executable, 
         [sys.executable, os.path.join(sys.path[0], __file__)] + sys.argv[1:])

要禁用警告:

import warnings
warnings.filterwarnings("ignore")

答案 1 :(得分:0)

在不了解程序结构的情况下,我能给出的最佳建议是将main函数作为参数传递。这样,在unlock.py中,您无需导入main模块。

考虑以下简单示例:

main.py

import unlock

def main(function_to_pass):
    # do stuff
    unlock.some_func(function_to_pass,*rest_of_args)

if __name__ == '__main__':
    main(main)

unlock.py

def some_func(function_to_call,*args):
   # do stuff
   if some_condition:
        function_to_call()

编辑:我意识到您不需要将main传递给自身。 main可以简单地引用自己。也就是说,

def main():
    # do stuff
    unlock.some_func(main,*args)