如何使用DAG代码中的不可安装模块?

时间:2019-08-27 13:42:28

标签: python-3.x git airflow python-module

我有一个Git存储库(除其他事项外)在airflow目录中包含Airflow DAG。除了Airflow的安装目录外,我还有一个存储库的克隆。 airflow配置变量指向Git中的AIRFLOW_HOME目录。

我希望允许从存储库中外部 airflow文件夹中列出的模块导入(请参见下面的结构)。

<repo root>
   |_airflow
      |_dags
         |_dag.py
   |_module1
   |_module2
   |_...

这样我就可以在dag.py中进行

from module1 import Module1

当前,没有tricks似乎不可能像明确编辑sys.path那样,这不是很优雅,必须在每个dag源文件中完成...

module1中制作可安装的软件包也是不可能的。

1 个答案:

答案 0 :(得分:1)

从此处的讨论重写结论


广泛地,有2种可能的方法

  1. 将您的代码打包到Airflow plugin
  2. 通过更新PYTHONPATH,使dag-definition-file解析过程可发现您的代码。再次,我们有以下选择

    (a)更新PYTHONPATH在系统级别using bashrc /对等(一次又一次),或者对于当前bash会话仅更新export the updated PYTHONPATH

    (b)以编程方式update sys.path在DAG定义文件的开头