我正在尝试在程序完成运行后重新启动main.py。但是,当我进入最后一个文件(unlock.py)时,将其放在脚本的末尾:
from main import *
main()
我收到一个循环导入错误。我不确定是否可以解决此问题,因此如果有人知道,将非常感谢您的帮助。如有任何疑问,请随时提问。
答案 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)