运行 2 python 个具有依赖关系的脚本

Running 2 python scripts with dependencies

我有 3 个 python 脚本,我正尝试将它们 运行 作为最终脚本,但我无法转移变量。我有 script_A.py 的所有数据。

script_B.py 和 script_C.py 使用脚本 A 中的所有变量。因此 "from script_A import *" 适用于每个变量。

我想 运行 在最终脚本中 script_B.py 和 script_C.py,final_script.py
我怎样才能做到这一点而不必在 final_script.py 中两次初始化 script_A.py 中的变量?

您可以分别使用script_Bscript_C来引用script_A的变量。

这是一个演示:

A.py

foo = 5
print('In A')

B.py

from A import *
print('In B')

final.py

import B
print('In final')
print B.foo

现在,运行 final.py 给出:

In A
In B
In final
5

可以看到,一旦B导入了A的数据,就成为了B的一部分,所以import B的其他类可以参考A的数据直接通过B,无需再次导入A

如果您需要 script_B.pyscript_C.py 文件作为单独的可执行脚本,我的解决方案是重构脚本以包含将所有相关变量作为参数的函数:

script_A.py:

var1 = 'foo'
var2 = 'bar'

script_B.py

def do_b(var1, var2):
    pass    # do things with var1 and var2

if __name__ == '__main__':
    from script_A import var1, var2
    do_b(var1=var1, var2=var2)

script_C.py

def do_c(var1, var2):
    pass    # do things with var1 and var2

if __name__ == '__main__':
    from script_A import var1, var2
    do_c(var1=var1, var2=var2)

final_script.py

from script_A import var1, var2
from script_B import do_b
from script_C import do_c


def main():
    do_b(var1, var2)
    do_c(var1, var2)

if __name__ == '__main__':
    main()