首页 > 解决方案 > Airflow Docker 映像未按预期处理 Python 模块

问题描述

我正在使用puckel/docker-airflowAWS运行docker-compose并稍作修改docker-compose.yml,但它没有像我期望的那样拾取 Python 模块,我想知道我是否做错了什么,或者我的预期是否不正确。当我尝试使用 Python 模块时,例如smart_open在我的 DAG 文件中,我收到一个错误:

webserver_1  | Traceback (most recent call last):
webserver_1  |   File "/usr/local/lib/python3.6/site-packages/airflow/models/__init__.py", line 413, in process_file
webserver_1  |     m = imp.load_source(mod_name, filepath)
webserver_1  |   File "/usr/local/lib/python3.6/imp.py", line 172, in load_source
webserver_1  |     module = _load(spec)
webserver_1  |   File "<frozen importlib._bootstrap>", line 684, in _load
webserver_1  |   File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
webserver_1  |   File "<frozen importlib._bootstrap_external>", line 678, in exec_module
webserver_1  |   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
webserver_1  |   File "/usr/local/airflow/dags/mysql_etl.py", line 11, in <module>
webserver_1  |     import smart_open
webserver_1  | ModuleNotFoundError: No module named 'smart_open'

但是,我已smart_open在我的 中列出,requirements.txt我的requirements.txt文件已安装在我的 中docker-compose.yml,并且它似乎已按预期加载:

webserver_1  | Collecting smart_open (from -r /requirements.txt (line 3))
webserver_1  |   Downloading https://files.pythonhosted.org/packages/37/c0/25d19badc495428dec6a4bf7782de617ee0246a9211af75b302a2681dea7/smart_open-1.8.4.tar.gz (63kB)

smart_open或者,当我构建指定使用 的 docker 映像时,错误消失了--build-arg PYTHON_DEPS="smart_open"

我没有entrypoint.sh从修改puckel/docker-airflow,据我所见,默认行为执行 apip install --user -r requirements.txt并且按预期工作。

那么:为了让我的 DAG 文件能够访问指定的 Python 模块,我是否需要做一些不同的事情,requirements.txt或者我只是用所有需要的模块构建了我的 Docker 映像?感谢您对此的任何见解!

标签: pythondockerairflow

解决方案


推荐阅读