【发布时间】:2019-10-04 13:37:44
【问题描述】:
使用气流我尝试简单的 DAG 工作。
我编写了自定义运算符和其他要导入到 DAG 逻辑所在的主文件中的文件。
这里是文件夹的结构:
├── airflow.cfg
├── dags
│ ├── __init__.py
│ ├── dag.py
│ └── sql_statements.sql
├── docker-compose.yaml
├── environment.yml
└── plugins
├── __init__.py
└── operators
├── __init__.py
├── facts_calculator.py
├── has_rows.py
└── s3_to_redshift.py
我在compose file 中设置了音量,因为我在登录容器终端时可以看到它们。
我在网上按照一些教程添加了一些__init__.py。
2个无空__init__进入
-
/plugins/operators:
from operators.facts_calculator import FactsCalculatorOperator
from operators.has_rows import HasRowsOperator
from operators.s3_to_redshift import S3ToRedshiftOperator
__all__ = [
'FactsCalculatorOperator',
'HasRowsOperator',
'S3ToRedshiftOperator'
]
-
/plugins:
from airflow.plugins_manager import AirflowPlugin
import operators
# Defining the plugin class
class CustomPlugin(AirflowPlugin):
name = "custom_plugin"
# A list of class(es) derived from BaseOperator
operators = [
operators.FactsCalculatorOperator,
operators.HasRowsOperator,
operators.S3ToRedshiftOperator
]
# A list of class(es) derived from BaseHook
hooks = []
# A list of class(es) derived from BaseExecutor
executors = []
# A list of references to inject into the macros namespace
macros = []
# A list of objects created from a class derived
# from flask_admin.BaseView
admin_views = []
# A list of Blueprint object created from flask.Blueprint
flask_blueprints = []
# A list of menu links (flask_admin.base.MenuLink)
menu_links = []
但我不断收到来自我的 IDE 的错误(说 No module named operators 或运算符的 __init__ 中的未解析引用运算符)。
因为一切都无法在网络服务器上启动。
知道如何设置吗?我哪里错了?
【问题讨论】:
-
尝试在
operators文件夹中只使用一个空的__init__.py并在plugins中执行导入。或者,不要从operators导入。直接从文件模块导入。 -
do the import inside plugins是什么意思。你想让我如何直接从模块导入? -
换句话说,在
__init__.py中的plugins中执行from operators import *。并定义您的运算符,如operators = [ <file>.<operator-class> ]。 Python 有烦人的导入逻辑,所以这可能是问题所在。 -
你能添加你得到问题的错误吗?