Python Cloud Composer上的气流无法导入模块

Python Cloud Composer上的气流无法导入模块,python,airflow,google-cloud-composer,Python,Airflow,Google Cloud Composer,我正在运行一个DAGtest_DAG.py,它在我的Google云存储桶中按以下方式构造 gcs-bucket/ dags/ test_dag.py dependencies/ __init__.py dependency_1.py module1/ __init__.py dependency_2.py 气流检测DAG

我正在运行一个DAG
test_DAG.py
,它在我的Google云存储桶中按以下方式构造

gcs-bucket/
    dags/
        test_dag.py
        dependencies/
            __init__.py
            dependency_1.py
            module1/
                __init__.py
                dependency_2.py
气流检测DAG,
test_DAG.py
,该DAG尝试从
dependency/dependency_1.py
(导入成功)导入,以及
dependencies/module1/dependency_2.py
给出错误
损坏的DAG:[/home/aiffair/gcs/dags/test_DAG.py]模块“依赖项”没有属性“module1”

导致此问题的行是dependencies.module1导入dependency_2中的

这似乎表明Cloud Composer无法从
dependencies/
中的子目录导入,当我查看它们的dependencies文档时,它们给出的结果仅比
/dags
低一个目录级别(并且仅是一个文件,而不是完整的python包)

但这里有一个奇怪的部分——当我在气流中(而不是在Cloud Composer上)本地运行它时,它成功地运行了。所以我不明白为什么我的导入可以在本地工作,而不能在CloudComposer上工作

我还尝试从我的
\uuu init\uuuu.py
文件中导入所有内容,这给了我相同的属性错误,并将依赖项向上移动到
gcs bucket/
中,在那里似乎根本找不到它们

当我用我的DAG打印出
\uu文件\uuuuuuu
时,我得到
/home/afflow/gcs/dags/test\u DAG.py
当我打印
系统路径时,我得到:

['/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']
我在这里完全不知所措,任何帮助都将不胜感激。多谢各位


编辑:当依赖项尝试导入其他依赖项时,Cloud Composer似乎不喜欢(请参见下面的注释)。想知道是否有办法解决这个问题吗?

你能在
dags/
文件夹下添加
\uu init\uuuuuy.py
并试一试吗?

你能让依赖项代码可用吗?老实说,这有点困难,这是一个最低可行的示例,但实际上,依赖项目录是一个由相互关联的片段组成的庞大包。如果有你想看的特定部分,我可以复制过来。我认为它不一定与代码有关的原因是,当我在本地运行它时,它运行得很好,所以我不认为导入的结构是这里的问题。我尝试重现您的问题,但它对我来说很好。我可以在一级目录和二级目录中同时导入模块,您可以检查所有依赖项和导入名称是否正确吗?我会仔细检查所有内容,但我可以问两个问题吗?您可以从依赖项2中导入依赖项1吗?更重要的是,您是否必须包含一个“setup.py”文件或任何我可能忘记使导入工作的其他文件?尝试此方法,无效