Один простой скрипт на Python — и я больше не трачу время на настройку среды каждый день!

Ноутбук с запущенным кодом на Python, окнами программ и логотипом Python на синем фоне.

Думаю, каждый разработчик встречал одинаковый сценарий в начале дня: снова и снова вручную подготавливать окружение через те же команды в терминале. Я делал так почти два года — каждый день, четыре команды подряд. Мне казалось, это мелочь, пока не посчитал, сколько времени уходит впустую и сколько раз потом приходилось исправлять забытое. В итоге я написал небольшой скрипт на Python, и теперь даже не представляю работу иначе: оказалось гораздо удобнее!

Какие именно четыре команды я запускал вручную

Почему эти команды были для меня обязательными

Если работали в команде с Python-проектами, наверняка узнаете эти строки. Каждая из них отвечала за свой этап запуска, и пропускать нельзя было ни одну:

С какими проблемами я столкнулся в первой версии скрипта

Всё выглядело хорошо, но я допустил две критичные ошибки

Сначала я просто собрал все четыре команды в один скрипт через subprocess. На вид всё работало, но не совсем так, как нужно.

Первая ошибка: export DEBUG=true ничего не меняет

Команда export встроена в сам shell. Если запускать её через subprocess.run(), она просто отрабатывает в отдельном, временном процессе, который сразу завершается. То есть заданные переменные не доходят до текущего терминала: команда выглядит как сработавшая, но на деле — ровным счётом ничего не происходит, и ошибки не видно.

Терминал показывает, что export не изменил переменные среды

Вторая ошибка: нет обработки ошибок — сбои проходят незаметно

Когда используешь subprocess.run(), при ошибке не будет исключения — только код завершения, который нужно проверять отдельно. В своём первом скрипте я этого не учёл, поэтому если, например, git pull не проходил из-за сетевой ошибки, следующие команды всё равно выполнялись, и проблемы выявлялись только потом, когда всё уже пошло не по плану.

Мой рабочий скрипт: как он устроен

Со второй попытки всё заработало — ошибки ловятся, команды выполняются как надо

Я добавил alias — теперь всё запускается одним коротким словом: dev. Скрипт объединяет все четыре этапа, а обработка ошибок встроена в логику с самого начала.

Что изменилось, когда я начал использовать скрипт ежедневно

Больше ни одной пропущенной команды, ошибки понятны с первого раза, а новичку достаточно ввести одну команду

Неожиданный плюс: скрипт сильно упростил адаптацию новых коллег. Спустя пару недель после его создания я помогал новому разработчику войти в проект — и вместо длинного списка команд просто скинул ему скрипт. Через минуту он уже работал в среде без проблем.


Подпишитесь на рассылку — делюсь короткими лайфхаками для автоматизации

Теперь я сразу вижу причину сбоя. Раньше, если забывал установить нужный пакет через pip, ловил ModuleNotFoundError где-нибудь в процессе и терял время на отладку. Сейчас скрипт сразу сообщает, что пошло не так, и останавливается — никаких тайных багов.

Даже самая простая автоматизация может перевернуть вашу рутину

Скрипт не обязательно должен быть каким-то сложным — важно, что он реально экономит время и нервы. Если вы каждый день запускаете одну и ту же пачку команд вручную — автоматизируйте это, разница становится ощутимой уже на следующий день.

Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!

Премиум подписка — это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!

Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь

Также подписывайтесь на нас в:

Алекс Бежбакин
Оцените автора
Добавить комментарий