我有以下文件夹结构
airflow/
|_dag/
据我所知,airflow 使用“airflow”文件夹作为根目录,即我假设所有放在“airflow”中的东西都可以导入。
假设我有不同的项目,任务放置在以下结构中
airflow/
|_dag/
| |_ mydag.py
|
|_myprojects/
|_projectone/
| |_tasks/
| |_ mytask.py
|_projecttwo/
|_tasks/
|_ mytask.py
然后我会假设我在 mydag.py
中应该能够从给定的项目中导入 mytask
,例如
#mydag.py
from myprojects.projectone import tasks
但我得到一个 DAG import error; ModuleNotFoundError: No module named 'myprojects'
。
这是可行的,还是我应该(以某种方式)改变气流 PYTHONPATH(在这种情况下,在哪里完成?)
注意,我在文件夹中创建了 __init__.py
个文件。
答案 0 :(得分:0)
一种选择是在导入 myproject
之前设置路径:
#mydag.py
import sys
# it's important for path being inserted before importing `myproject`
sys.path.insert(0, "..")
from myproject import tasks
第二个选项是将 myproject 移动到 dag 文件夹下:
airflow
+-- dag
+--- myproject
第三个选项是将一些逻辑移动到 plugins/
文件夹中。
https://airflow.apache.org/docs/apache-airflow/stable/modules_management.html