簡體   English   中英

Airflow Docker - 沒有名為“pyodbc”的模塊

[英]Airflow Docker - No module named 'pyodbc'

我有一個 Python 腳本,它使用 Pyodbc 與 SQL 服務器一起工作,我正在嘗試使用 Airflow DAG 運行此腳本:

auction_task = PythonOperator(
  task_id='auction_etl',
  python_callable=get_auction_data,
  dag=dag
)

get_auction_data function 在另一個文件中:

import json
import requests
import datetime
import pyodbc
import time

def get_auction_data(config):
    return retrieve_from_api(config)

但我在 UI 中不斷收到此錯誤:

Broken DAG: [/opt/airflow/dags/auctionds/etl/auction_etl.py] Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/opt/airflow/dags/auctionds/etl/auction_etl.py", line 9, in <module>
    import pyodbc
ModuleNotFoundError: No module named 'pyodbc'

Airflow 在 Docker 容器中運行,我嘗試在工作容器中手動安裝 pyodbc,但沒有成功。 此外,如果我在工作容器內運行 python 命令並運行“import pyodbc”,它就可以正常工作。 我不知道我錯過了什么。 謝謝!

您需要創建一個添加了 pyodbc 的自定義圖像。 您可以在https://airflow.apache.org/docs/docker-stack/build.html#how-to-build-your-own-image中看到一些有關如何執行此操作的示例,包括有關如何添加新 Z23EEEB4347BDD26BFC6B77包。

然后,您必須在 docker 部署中使用該自定義映像(但是您部署容器 - 例如可能是 docker 容器或 K8S)。 您只需要使您的映像可用於部署並確保它使用您的新映像。

暫無
暫無

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

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