Welcome to hell! Dependency hell!
В статье автор разбирает трудности, с которыми могут столкнуться python–разработчики, использующие зависимости (которых более 1,4 млн. в PyPI) и способы их решения.
Как правило, проблемы составляют не direct-зависимости (те, что вы явно указываете), а зависимости зависимостей (transitive,чтобы понять рекурсию надо сперва понять рекурсию).
На примере это может выглядеть так:
🍭 Ваше приложение использует прямую (direct) зависимость A
🍭 А, в свою очередь, использует B и C (transitive)
🍭 Для корректной работы B и C необходима зависимость D
Вроде все хорошо, в чем же проблема? Проблема может быть в том, что версии D, одновременно удовлетворяющей потребностям B и C может попросту не существовать! В итоге приложение не собирается и не работает.
Для решения этих проблем автор статьи предлагает использовать Watchman – утилиту, которая позволяет строить полный граф зависимостей и поддерживать его в актуальном состоянии для идентификации потенциальных dependency conflict.
На наш взгляд это так же крайне важно и для специалистов по ИБ, которые иногда просят разработчиков обновить зависимость на более «новую», чтобы устранить уязвимость и даже не представляют о последствиях, которые могут произойти (казалось бы, что сложного использовать n+1 версию?).
Это подводит нас к тому, о чем не говорил только ленивый – важности взаимодействия между Dev и Sec командами для поиска оптимального решения задачи ☺️
P.S. Астрологи объявили неделю неработающих preview, поэтому дублируем ссылку: https://blog.acolyer.org/2020/09/21/watchman/
В статье автор разбирает трудности, с которыми могут столкнуться python–разработчики, использующие зависимости (которых более 1,4 млн. в PyPI) и способы их решения.
Как правило, проблемы составляют не direct-зависимости (те, что вы явно указываете), а зависимости зависимостей (transitive,
На примере это может выглядеть так:
🍭 Ваше приложение использует прямую (direct) зависимость A
🍭 А, в свою очередь, использует B и C (transitive)
🍭 Для корректной работы B и C необходима зависимость D
Вроде все хорошо, в чем же проблема? Проблема может быть в том, что версии D, одновременно удовлетворяющей потребностям B и C может попросту не существовать! В итоге приложение не собирается и не работает.
Для решения этих проблем автор статьи предлагает использовать Watchman – утилиту, которая позволяет строить полный граф зависимостей и поддерживать его в актуальном состоянии для идентификации потенциальных dependency conflict.
На наш взгляд это так же крайне важно и для специалистов по ИБ, которые иногда просят разработчиков обновить зависимость на более «новую», чтобы устранить уязвимость и даже не представляют о последствиях, которые могут произойти (казалось бы, что сложного использовать n+1 версию?).
Это подводит нас к тому, о чем не говорил только ленивый – важности взаимодействия между Dev и Sec командами для поиска оптимального решения задачи ☺️
P.S. Астрологи объявили неделю неработающих preview, поэтому дублируем ссылку: https://blog.acolyer.org/2020/09/21/watchman/