Mat*_*att 6 python airflow google-cloud-composer
我正在test_dag.py我的 Google Cloud Storage Bucket 中运行一个 DAG,其结构如下。
gcs-bucket/
dags/
test_dag.py
dependencies/
__init__.py
dependency_1.py
module1/
__init__.py
dependency_2.py
Run Code Online (Sandbox Code Playgroud)
Airflow 检测到 DAG, test_dag.py,它尝试从 导入depencies/dependency_1.py,(导入成功)并dependencies/module1/dependency_2.py给出错误Broken DAG: [/home/airflow/gcs/dags/test_dag.py] module 'dependencies' has no attribute 'module1'。
导致此问题的线路是from dependencies.module1 import dependency_2.
这似乎向我表明 Cloud Composer 无法从 中的子目录导入,并且当我在此处dependencies/查看它们的依赖项文档时,他们给出的示例仅是下一级目录(并且只有 1 个文件,而不是完整的文件) python 包)。/dags
不过,这是一个奇怪的部分——当我在 Airflow 本地(而不是在 Cloud Composer 上)运行它时,它运行成功。因此,我不知道为什么我的导入可以在本地运行,但不能在 Cloud Composer 上运行。
我还尝试从我的__init__.py文件中导入所有内容,这给了我相同的属性错误,并将我的依赖项上移到gcs-bucket/似乎根本找不到它们的位置。
当我__file__用 DAG/home/airflow/gcs/dags/test_dag.py打印时sys.path,我得到:
['/usr/local/bin', '/opt/python3.6/lib/python36.zip', '/opt/python3.6/lib/python3.6', '/opt/python3.6/lib/python3.6/lib-dynload', '/opt/python3.6/lib/python3.6/site-packages', '/usr/local/lib/airflow', '/home/airflow/gcs/dags', '/etc/airflow/config', '/home/airflow/gcs/plugins']
Run Code Online (Sandbox Code Playgroud)
我在这里完全不知所措,任何帮助将不胜感激。谢谢。
编辑:Cloud Composer 似乎不喜欢依赖项尝试导入其他依赖项(请参阅下面的评论)。想知道是否有办法解决这个问题?
| 归档时间: |
|
| 查看次数: |
3041 次 |
| 最近记录: |