#airflow
Вопрос:
У меня есть dockerfile
:
FROM python:3.9.6-alpine3.14
ARG AIRFLOW_USER_HOME=/usr/local/airflow
ENV AIRFLOW_HOME=${AIRFLOW_USER_HOME}
RUN pip install apache-airflow[postgres,ssh,s3]==2.0.0 --constraint https://raw.githubusercontent.com/apache/airflow/constraints-2.0.0/constraints-3.9.txt
#Add aws config profiles from local to docker machine
ADD ./environtment_config/airflow_config/entrypoint.sh /entrypoint.sh
ADD ./environtment_config/airflow_config/airflow.cfg ${AIRFLOW_USER_HOME}/airflow.cfg
RUN chown -R 777 ${AIRFLOW_USER_HOME}
RUN chmod -R 777 /entrypoint.sh
EXPOSE 8080 8081 5432 5555 8793
WORKDIR "/"
ENTRYPOINT ["/entrypoint.sh"]
#arg to entrypoint
CMD ["webserver"]
Ошибка, которую я получаю, такова:
ERROR: Cannot install apache-airflow[postgres,s3,ssh]==2.0.0 because these package versions have conflicting dependencies.
The conflict is caused by:
apache-airflow[postgres,s3,ssh] 2.0.0 depends on pandas<2.0 and >=0.17.1
The user requested (constraint) pandas==1.2.2
To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict
Я не могу понять, в чем проблема, потому что версия pandas в --constraint
файле pandas==1.2.2
. Таким образом, он полностью заполняет необходимую зависимость для apache-airflow.
Чтобы устранить проблему, связанную с дополнительными пакетами, которые я также тестировал с помощью:
RUN pip install apache-airflow==2.0.0 --constraint https://raw.githubusercontent.com/apache/airflow/constraints-2.0.0/constraints-3.9.txt
И я получаю ту же ошибку.
Ответ №1:
См. Документацию по установке для Airflow 2.0.0: https://airflow.apache.org/docs/apache-airflow/2.0.0/installation.html — вам необходимо использовать PIP 20.2.4 для установки Airflow 2.0.0:
В ноябре 2020 года была выпущена новая версия PIP (20.3) с новым распознавателем 2020 года. Этот распознаватель еще не работает с Apache Airflow и может привести к ошибкам при установке — зависит от вашего выбора дополнительных функций. Чтобы установить Airflow, вам нужно либо понизить pip до версии 20.2.4 pip обновление —pip==20.2.4, либо, если вы используете Pip 20.3, вам нужно добавить опцию —использовать устаревший преобразователь в команду установки pip.
Совместимость с более новыми версиями PIP была исправлена в серии 2.1.*.
Просто вопрос. Почему вы хотите установить версию 2.0.0? Есть ли какая-то особая причина? Вам не хватает многих исправлений ошибок, включая некоторые критические исправления безопасности-например, это критическое исправление безопасности, примененное в 2.1.2:
<a rel=»noreferrer noopener nofollow» href=»https://lists.apache.org/thread.html/r53d6bd7b0a66f92ddaf1313282f10fec802e71246606dd30c16536df@» rel=»nofollow noreferrer»>https://lists.apache.org/thread.html/r53d6bd7b0a66f92ddaf1313282f10fec802e71246606dd30c16536df@
Airflow реализует SemVer, что означает, что все версии 2.* совместимы с обратной связью. Даже в серии 2.0.* были исправления 2.0.1 и 2.0.2, и мы как раз собираемся выпустить 2.1.3. который предоставляет еще один раунд исправлений для 2.1. Я не могу представить себе причину, по которой вы хотели бы установить Airflow 2.0.0. Не могли бы вы объяснить, зачем вам это нужно?
Комментарии:
1. @JaredPotiuk спасибо за информацию. Я постараюсь отметить ваш ответ как решение, как только полностью его протестирую. Я буду использовать 2.0.0, потому что я сначала попробую 2.1.0, и планировщик внезапно упадет. Уже опубликовал вопрос в сообществе slack, но нет информации о том, как это исправить, поэтому я провожу свой собственный тест, чтобы выяснить, что происходит.