Python 3.x 未找到气流合成器自定义模块-PythonVirtualenOperator

Python 3.x 未找到气流合成器自定义模块-PythonVirtualenOperator,python-3.x,airflow,google-cloud-composer,Python 3.x,Airflow,Google Cloud Composer,我在GCP Composer中有一个非常简单的气流实例设置。它有水桶和所有东西。我想用PythonVirtualenvOperator设置每个dag以运行它自己的环境 其结构如下: dags -> ------> code_snippets/ ----------> print_name.py - has function called print_my_name() which prints a string into the terminal ------> test

我在GCP Composer中有一个非常简单的气流实例设置。它有水桶和所有东西。我想用PythonVirtualenvOperator设置每个dag以运行它自己的环境

其结构如下:

dags ->
------> code_snippets/
----------> print_name.py - has function called print_my_name() which prints a string into the terminal
------> test_dag.py
测试_dag.py:

import datetime
from airflow.operators.python_operator import PythonVirtualenvOperator
from airflow import DAG


def main_func():
    import pandas as pd
    import datetime

    from code_snippets.print_name import print_my_name
    print_my_name()

    df = pd.DataFrame(data={
        'date': [str(datetime.datetime.now().date())]
    })

    print(df)

default_args = {
    'owner': 'test_dag',
    'start_date': datetime.datetime(2020, 7, 3, 5, 1, 00),
    'concurrency': 1,
    'retries': 0
}

dag = DAG('test_dag', description='Test DAGS with environment',
          schedule_interval='0 5 * * *',
          default_args=default_args, catchup=False)

test_the_dag = PythonVirtualenvOperator(
    task_id="test_dag",
    python_callable=main_func,
    python_version='3.8',
    requirements=["DateTime==4.3", "numpy==1.20.2", "pandas==1.2.4", "python-dateutil==2.8.1", "pytz==2021.1",
                  "six==1.15.0", "zope.interface==5.4.0"],
    system_site_packages=False,
    dag=dag,
)

test_the_dag
在我开始导入自定义模块之前,一切都正常-使用init.py没有任何帮助,它仍然会发出相同的错误,在我的例子中是:

from code_snippets.print_name import print_my_name\nModuleNotFoundError: No module named \'code_snippets\'
我也有一个气流的本地实例,我遇到了同样的问题。我尝试过四处移动,或将文件夹的路径添加到路径,在目录中添加init,甚至更改import语句,但只要我导入自定义模块,错误就会一直存在

system\u site\u packages=False或True也无效

是否有一个解决方案或一种绕过它的方法,以便我可以利用我在DAG之外分离的自定义代码

气流版本:1.10.14+作曲家 气流的Python版本设置为:3

的实现是这样的:
Python\u callable
预期不会引用外部名称

在callable中使用的任何非标准库包都必须在
requirements.txt
文件中声明为外部依赖项

如果需要使用
code\u代码段
,请将其作为包发布到pypi或VCS存储库中,并将其添加到
PythonVirtualInvoperator
要求
kwargs中的包列表中