
Думаю, каждый разработчик встречал одинаковый сценарий в начале дня: снова и снова вручную подготавливать окружение через те же команды в терминале. Я делал так почти два года — каждый день, четыре команды подряд. Мне казалось, это мелочь, пока не посчитал, сколько времени уходит впустую и сколько раз потом приходилось исправлять забытое. В итоге я написал небольшой скрипт на Python, и теперь даже не представляю работу иначе: оказалось гораздо удобнее!
- Какие именно четыре команды я запускал вручную
- Почему эти команды были для меня обязательными
- С какими проблемами я столкнулся в первой версии скрипта
- Всё выглядело хорошо, но я допустил две критичные ошибки
- Первая ошибка: export DEBUG=true ничего не меняет
- Вторая ошибка: нет обработки ошибок — сбои проходят незаметно
- Мой рабочий скрипт: как он устроен
- Со второй попытки всё заработало — ошибки ловятся, команды выполняются как надо
- Что изменилось, когда я начал использовать скрипт ежедневно
- Больше ни одной пропущенной команды, ошибки понятны с первого раза, а новичку достаточно ввести одну команду
- Подпишитесь на рассылку — делюсь короткими лайфхаками для автоматизации
- Даже самая простая автоматизация может перевернуть вашу рутину
Какие именно четыре команды я запускал вручную
Почему эти команды были для меня обязательными
Если работали в команде с Python-проектами, наверняка узнаете эти строки. Каждая из них отвечала за свой этап запуска, и пропускать нельзя было ни одну:
С какими проблемами я столкнулся в первой версии скрипта
Всё выглядело хорошо, но я допустил две критичные ошибки
Сначала я просто собрал все четыре команды в один скрипт через subprocess. На вид всё работало, но не совсем так, как нужно.
Первая ошибка: export DEBUG=true ничего не меняет
Команда export встроена в сам shell. Если запускать её через subprocess.run(), она просто отрабатывает в отдельном, временном процессе, который сразу завершается. То есть заданные переменные не доходят до текущего терминала: команда выглядит как сработавшая, но на деле — ровным счётом ничего не происходит, и ошибки не видно.

Вторая ошибка: нет обработки ошибок — сбои проходят незаметно
Когда используешь subprocess.run(), при ошибке не будет исключения — только код завершения, который нужно проверять отдельно. В своём первом скрипте я этого не учёл, поэтому если, например, git pull не проходил из-за сетевой ошибки, следующие команды всё равно выполнялись, и проблемы выявлялись только потом, когда всё уже пошло не по плану.
Мой рабочий скрипт: как он устроен
Со второй попытки всё заработало — ошибки ловятся, команды выполняются как надо
Я добавил alias — теперь всё запускается одним коротким словом: dev. Скрипт объединяет все четыре этапа, а обработка ошибок встроена в логику с самого начала.
Что изменилось, когда я начал использовать скрипт ежедневно
Больше ни одной пропущенной команды, ошибки понятны с первого раза, а новичку достаточно ввести одну команду
Неожиданный плюс: скрипт сильно упростил адаптацию новых коллег. Спустя пару недель после его создания я помогал новому разработчику войти в проект — и вместо длинного списка команд просто скинул ему скрипт. Через минуту он уже работал в среде без проблем.
Подпишитесь на рассылку — делюсь короткими лайфхаками для автоматизации
Теперь я сразу вижу причину сбоя. Раньше, если забывал установить нужный пакет через pip, ловил ModuleNotFoundError где-нибудь в процессе и терял время на отладку. Сейчас скрипт сразу сообщает, что пошло не так, и останавливается — никаких тайных багов.
Даже самая простая автоматизация может перевернуть вашу рутину
Скрипт не обязательно должен быть каким-то сложным — важно, что он реально экономит время и нервы. Если вы каждый день запускаете одну и ту же пачку команд вручную — автоматизируйте это, разница становится ощутимой уже на следующий день.
Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!
Премиум подписка — это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!
Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь
Также подписывайтесь на нас в:
- Telegram: https://t.me/gergenshin
- Youtube: https://www.youtube.com/@gergenshin
- Яндекс Дзен: https://dzen.ru/gergen
- Официальный сайт: https://www-genshin.ru





