簡體   English   中英

為什么 docker-compose python 沒有找到氣流操作員的模塊

[英]Why docker-compose python no module found for airflow operator

我正在對 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 導入代碼是:


from operators.pandas_etl_over_postgres_operator import PandasETLOverPostgresOperator

我嘗試了以下兩種替代方法,它們也給出了相同的錯誤。

from .operators.pandas_etl_over_postgres_operator import PandasETLOverPostgresOperator

from ..operators.pandas_etl_over_postgres_operator import PandasETLOverPostgresOperator

導入在本地工作正常,但在我使用 docker-compose 構建和運行時失敗。

請注意,對於氣流,默認情況下, [core] > dags_folder的值為/usr/local/airflow/dags dags_folder /usr/local/airflow/dags dags_folder意味着氣流將在路徑/usr/local/airflow/dags dags_folder /usr/local/airflow/dags dags_folder

因此,您所有的 dags 代碼都應該在該文件夾中,因此,您需要更改以下幾項內容才能使代碼正常工作:

  • docker-compose.yml文件中:
- ./dags:/usr/local/airflow/dags/dags
- ./logs:/usr/local/airflow/dags/logs
- ./operators:/usr/local/airflow/dags/operators
  • pandas_etl.py文件中:
from operators.pandas_etl_over_postgres_operator import PandasETLOverPostgresOperator

希望能幫助到你!

我認為這是因為您需要將操作員放在插件目錄中並將其安裝到容器中。 此處查看有關插件的 Puckle 文檔。 您還可以通過在此處檢查配置文件查看和更改特定氣流實例查找插件的位置

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM