为什么docker compose python找不到气流操作符的模块

为什么docker compose python找不到气流操作符的模块,python,docker,docker-compose,airflow,Python,Docker,Docker Compose,Airflow,我正在为docker airflow postgres etl进行测试。我的项目结构当前如下所示: docker-airflow | ├── Dockerfile ├── __init__.py ├── dags │   ├── __init__.py │   ├── pandas_etl.py │   └── tuto.py ├── docker-compose.yml ├── operators    ├── __init__.py    └── pandas_etl_over_post

我正在为docker airflow postgres etl进行测试。我的项目结构当前如下所示:

docker-airflow
|
├── Dockerfile
├── __init__.py
├── dags
│   ├── __init__.py
│   ├── pandas_etl.py
│   └── tuto.py
├── docker-compose.yml
├── operators
    ├── __init__.py
    └── pandas_etl_over_postgres_operator.py
将我的
pandas_etl_over_postgres_operator.py
导入
pandas_etl.py
dag时,我收到一个错误,即找不到模块

pandas_etl.py导入代码为:


从operators.pandasel_etl_over_postgres_operator导入pandasetloverpostgres运算符
我尝试了以下两种选择,它们也给出了相同的错误

from .operators.pandas_etl_over_postgres_operator import PandasETLOverPostgresOperator


导入在本地工作正常,但在我使用docker compose构建和运行时失败。

请注意,对于airflow,默认情况下,
[core]
dags\u文件夹的值将为
/usr/local/afflow/dags
,这意味着airflow将在路径
/usr/local/afflow/dags>中查找DAG

因此,您的所有dags代码都应位于该文件夹中,因此,为了使代码正常工作,您需要更改以下几项:

  • docker compose.yml
    文件中:
  • pandas_etl.py
    文件中:

希望有帮助

请注意,对于气流,默认情况下,
[core]
dags\u文件夹
的值为
/usr/local/afflow/dags
,这意味着气流将在路径
/usr/local/afflow/dags
中查找DAG

因此,您的所有dags代码都应位于该文件夹中,因此,为了使代码正常工作,您需要更改以下几项:

  • docker compose.yml
    文件中:
  • pandas_etl.py
    文件中:

希望有帮助

我认为这是因为您需要将运算符放在插件目录中,并将其装入容器中。看看关于插件的Puckle文档。通过检查配置文件,您还可以查看和更改特定airflow实例查找插件的位置。我认为这是因为您需要将操作员放入插件目录中,并将其装入容器中。看看关于插件的Puckle文档。通过检查配置文件

哪个文件是运行此项目的入口点,您还可以查看并更改特定airflow实例查找插件的位置?。我相信如果您将根文件夹的绝对路径添加到
sys.path
,那么您就可以导入该模块。@Thilak这里是repo的一个示例。是否需要将
ENV PYTHONPATH=/usr/local/aiffair
添加到
Dockerfile
@Thilak导入之前,我尝试添加
sys.path.append(os.path.join(os.path.dirname(sys.path[0]),'operators')
pandas\u etl.py
,但是仍然会出现错误
未找到模块
运行此项目的入口点是哪个文件?。我相信如果您将根文件夹的绝对路径添加到
sys.path
,那么您就可以导入该模块。@Thilak这里是repo的一个示例。是否需要将
ENV PYTHONPATH=/usr/local/aiffair
添加到
Dockerfile
@Thilak导入之前,我尝试添加
sys.path.append(os.path.join(os.path.dirname(sys.path[0]),“operators”)
pandas\u etl.py
,但仍然无法找到错误
module
from ..operators.pandas_etl_over_postgres_operator import PandasETLOverPostgresOperator
- ./dags:/usr/local/airflow/dags/dags
- ./logs:/usr/local/airflow/dags/logs
- ./operators:/usr/local/airflow/dags/operators
from operators.pandas_etl_over_postgres_operator import PandasETLOverPostgresOperator