Не удается установить apache-airflow==2.0.0, поскольку эти версии пакетов имеют конфликтующие зависимости

#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, но нет информации о том, как это исправить, поэтому я провожу свой собственный тест, чтобы выяснить, что происходит.