运行带有依赖项的2个python脚本

时间:2017-06-28 07:35:12

标签: python python-import

我有3个python脚本,我试图作为最终脚本运行,但我无法传输变量。我有script_A.py包含所有数据。

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

我想在最终脚本final_script.py中运行script_B.py和script_C.py 如果不必在final_script.py中将script_A.py中的变量初始化两次,我该怎么办呢?

2 个答案:

答案 0 :(得分:0)

您可以分别使用script_Ascript_B来引用script_C的变量。

以下是演示:

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

答案 1 :(得分:0)

如果您需要将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()