Изображение док-станции Airflow не обрабатывает модули Python, как ожидалось - PullRequest
0 голосов
/ 28 июня 2019

Я запускаю 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 со всеми необходимыми модулями?Спасибо за понимание этого вопроса

...