Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Luigi管道时组织文件?_Python_Class_Dependencies_Workflow_Luigi - Fatal编程技术网

Python 使用Luigi管道时组织文件?

Python 使用Luigi管道时组织文件?,python,class,dependencies,workflow,luigi,Python,Class,Dependencies,Workflow,Luigi,我正在使用Luigi作为我的工作流程。我的工作流程一般分为三个部分:导入、分析、导出。在每个部分中,都有多个Luigi任务 我可以把所有的东西都放在一个文件里。但是,如果我想将所有内容分开,比如在拥有data\u import.py、analysis.py和export.py时 例如,如果data\u import.py如下所示: import luigi class import_task_A(luigi.Task): def requires(self): retu

我正在使用Luigi作为我的工作流程。我的工作流程一般分为三个部分:导入、分析、导出。在每个部分中,都有多个Luigi任务

我可以把所有的东西都放在一个文件里。但是,如果我想将所有内容分开,比如在拥有
data\u import.py
analysis.py
export.py

例如,如果
data\u import.py
如下所示:

import luigi

class import_task_A(luigi.Task):
    def requires(self):
        return []
    def output(self):
        return luigi.LocalTarget('myfile.txt')
    def run(self):
        my import stuff

if __name__ == '__main__':
    luigi.run()
但是,如果export.py中的任务依赖于import.py中的任务,该怎么办。我会:

from data_import import import_task_A
import luigi

class export_task_A(luigi.Task):
    def requires(self):
        return import_task_A()
    def output(self):
        return luigi.LocalTarget('myfile.txt')
    def run(self):
        my import stuff

if __name__ == '__main__':
    luigi.run()

如果我将较大的项目分解为多个
.py
文件,那么告诉Luigi哪些文件中包含哪些必需任务的最佳方法是什么?看起来这个方法会变得很麻烦。

为什么会变得很麻烦?如果导出任务依赖于多个任务,则def要求将更改为:

def requires(self):
    return [import_task_A(), import_task_B()]
顺便说一下,在这种情况下,您可能需要删除

if __name__ == '__main__':
    luigi.run()
从您的数据_import.py。也可以在data_export.py中使用,而不是相同的

if __name__ == '__main__':
    luigi.build([export_task_A()])

我不知道有没有办法。您要么需要有多个文件,要么需要在一个文件中包含多个类。你想如何组织你的项目,这是一个优先考虑的问题

要限制从中导入的位置数量,可以做的一件事是使用一个python文件来导入所需的所有Luigi类

#my_tasks.py
从数据导入任务
来自导出任务

然后在其他文件中,您可以从
my\u tasks
导入所需的任何内容。还考虑使用<代码> GATTARB或<代码> ILILIB < /代码>,以便在导入和访问类上有更大的灵活性。

您的操作方式似乎很好。为什么会变得繁琐?