Как не профукать свой проект на Python? 🐍
Конец этой недели выдался интересным в плане рабочих задач. У одного клиента отвалился Airflow - это инструмент, который используется для управления потоками обработки данных. Реализован он на Python с использованием фреймворка Flask.
Почему отвалился? После неудачной попытки обновления этого самого Airflow. Апгрейд самого инструмента прошел успешно, ну а дальше начались проблемы с зависимостями. Оказалось, что проект не был установлен изолировано и обновление одного пакета затронуло много чего на уровне системы. Избежать подобного можно при помощи виртуального окружения или virtual environment. Попробую по простому объяснить что это такое.
Замки из песка и проекты в Python 🏰
У вас есть дистрибутив Linux, в котором много где используется Питон. И вы решили на этом дистрибутиве развернуть питонячий проект. Чтобы состояние проекта не влияло на зависимости Питона на уровне системы или на другие проекты (существующие или которые только появятся) проект нужно разместить в том самом виртуальном окружении - изолированной среде в пределах системы, которая не связана с системными пакетами Python и с пакетами других проектов.
Проекты и разработчиков в такой ситуации можно представить детьми, которые в песочнице строят замки. Одно неловкое движение и твой замок рухнет, но при этом есть риск обрушить еще и замки других детей. Мы ведь этого не хотим, правда? Поэтому свой замок мы обнесем оградой, закрывшись от других замков изолированной средой.
После нас хоть потоп 🌊
Оградившись от других детей и замков мы можем делать со своим творением все, что душа пожелает. Даже если что-то сломается, то это никак не повлияет на других. И наоборот, ошибки других не смогут повлиять на наш замок. Можем сделать несколько таких изолированных песочниц и пробовать в них любые варианты. Что в такой ситуации может произойти страшного? Только что-то глобальное - например, по городу, где расположены наши песочницы прилетит метеорит и разнесет все к черту. Но в таком случае уже будет не до спасения каждого отдельно взятого замка, нужно будет решать проблемы болшего масштаба.
Семь раз отмерь… и сделай виртуальное окружение 🧠
Проблемы с Airflow могло вообще не возникнуть, если бы изначально он крутился в виртуальном окружении. И даже если бы трудности после обновления возникли, то при решении все было бы проще, чем работа с зависимостями и пакетами Питона на уровне системы, когда любые манипуляции с ними грозят тем, что отвалится что-нибудь еще.
Потому, если вы новичок в программировании на Питоне, то виртуальное окружение должно стать вашим лучшим спутником при работе. Изолируйте все по максимуму, чтобы потом не оказаться у разбитого корыта.
Post #414
303
- 👍 2