У меня docker с воздушным потоком, при попытке запустить скрипт python с помощью Airflow он возвращает:
ModuleNotFoundError: No module named 'others'
Если я печатаю echo $PYTHONPATH
, я получаю :/libraries:/database_libraries:/others
Печать whoami
Я получаю: airflow
Все три оператора, работающие в группе обеспечения доступности баз данных.
Если я попадаю на машину docker и эти операторы через Bash, я получаю:
whoami: --> airflow
echo $PYTHONPATH: --> :/libraries:/database_libraries:/others
python script.py(previously did: cd /usr/local/airflow/dags) --> ModuleNotFoundError
Он также не работает при использовании python в терминале, та же ошибка. Но это работает. Если я сделаю cd /
, а затем python script.py
(что ж, он возвращает разрешение, запрещенное для файла журнала, созданного самим сценарием)
Могут ли обе проблемы быть связаны с разрешениями? У меня нет pwd пользователя root, потому что docker создано FROM puckel/docker-airflow:1.10.1
Редактировать
sys.path имеет следующее:
/
/libraries
/database_libraries
/others
/usr/local/lib/python36.zip
/usr/local/lib/python3.6
/usr/local/lib/python3.6/lib-dynload
/usr/local/lib/python3.6/site-packages
Редактировать 2:
Dockerfile
#Base image
FROM puckel/docker-airflow:1.10.1
#Impersonate
USER root
#Los automatically thrown to the I/O strem and not buffered.
ENV PYTHONUNBUFFERED 1
ENV AIRFLOW_HOME=/usr/local/airflow
ENV PYTHONPATH "${PYTHONPATH}:/libraries"
WORKDIR /
#Add docker source files to the docker machine
ADD ./docker_resources ./docker_resources
#Install libraries and dependencies
RUN apt-get update && apt-get install -y vim
RUN pip install --user psycopg2-binary
RUN pip install -r docker_resources/requirements.pip
РЕДАКТИРОВАТЬ 3 Я знаю, что происходит , но не знаю, как это исправить. Если я сделаю:
cd /usr/local/airflow
python
import libraries
Сбой, с ModuleNotFoundError
Но если до этого я переместить папку библиотек в /usr/local/airflow
, а затем сделаю это, это работает. Несмотря на то, что PYTHONPATH не меняется. Таким образом, кажется, что импорт ищет папку в текущем каталоге.
Как это исправить?
Сценарий делает: import utils
, что, возможно, заключается в том, что он не понимает указанное root в PYTHONPATH?