Я запускаю puckel/docker-airflow
в AWS, используя 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'
Однако, в моем requirements.txt
указан smart_open
, у меня есть 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
с использованием --build-arg PYTHON_DEPS="smart_open"
Я не изменяю entrypoint.sh
из puckel/docker-airflow
, насколько я вижу, поведение по умолчанию выполняет pip install --user -r requirements.txt
и работает как положено.
Итак: есть что-то, что мне нужносделать иначе, чтобы мои файлы DAG имели доступ к модулям Python, указанным в requirements.txt
, или я просто собрал свой образ Docker со всеми необходимыми модулями?Спасибо за понимание этого вопроса