Image

Как раскрутить структуру проекта с помощью Cookiecutter

Делайте все быстро

Делиться

65f7be1d944108521fe386858a5e311e

Если вы хоть немного похожи на меня, то «прокрастинация» может стать вашим вторым именем. Перед началом нового проекта всегда возникает эта мучительная нерешительность. Одна лишь мысль о создании структуры проекта, создании документации или написании достойного README вызывает зевоту. Это как смотреть на чистый лист перед ужасным школьным сочинением. Но вспомните, насколько всё становится проще, когда какой-нибудь полезный LLM (например, ChatGPT) предоставляет стартовый шаблон? Та же магия применима и к вашим проектам по программированию. Вот тут-то и вступает в дело Cookiecutter.

Что такое Cookiecutter?

Cookiecutter — это инструмент с открытым исходным кодом, который помогает создавать шаблоны проектов. Он не зависит от языка программирования и работает практически с любым языком программирования (или даже вне его, если вам нужна стандартизированная структура папок и файлов). С помощью Cookiecutter вы можете настроить все шаблонные файлы (например, README, Dockerfiles, каталоги проектов и т.д.), а затем быстро генерировать новые проекты на основе этой структуры.

Рабочий процесс Cookiecutter состоит из трех основных этапов:

  1. Вы определяете шаблон своего проекта.
  2. Пользователь вводит значения для указанных вами переменных.
  3. Cookiecutter создает новый проект, автоматически заполняя файлы, папки и значения переменных на основе введенных пользователем данных.

Следующий рисунок иллюстрирует этот процесс:

64fcf3939489a13512d0b73fe5112355

1. Базовая настройка компьютера

Для установки и использования Cookiecutter вам потребуются минимальные навыки программирования. Если вы можете открыть окно командной строки, всё готово.

• В Windows введите «cmd» в строке поиска и откройте «Командную строку».

• Если вы еще этого не сделали, установите pipx с помощью:

pip install pipx

Проверьте установку, запустив:

pipx —версия

Если вы получили ошибку «команда не найдена», добавьте pipx в переменную PATH. Сначала найдите, где установлен pipx: python -m site –user-base.

В результате может быть возвращено что-то вроде /home/username/.local. Найдите папку, содержащую pipx.exe (в Windows) или pipx (в macOS или Linux). Если у вас нет прав администратора, каталог может быть C:UsersusernameAppDataRoamingPythonPythonxxxScripts.

Мне пришлось добавить pipx в свой путь, и если у вас нет прав администратора, вам придётся делать это каждый раз при запуске нового окна терминала. Поэтому рекомендуется добавить расположение на постоянной основе в переменные среды. Однако, если этот параметр находится за пределами прав администратора, вы всё равно можете добавить

set PATH=C:Usersимя пользователяAppDataRoamingPythonPythonxxxScripts;%PATH%

Или

set PATH=/home/имя_пользователя/.local/bin;%PATH%

Надеюсь, теперь вы получите осмысленный ответ для pipx —version.

2. Установка и настройка Cookiecutter

Cookiecutter распространяется как пакет Python, поэтому вы можете установить его с помощью pipx:

pipx установить cookiecutter

Или просто запустите его «на лету» с помощью:

pipx запустить cookiecutter …

Давайте рассмотрим создание шаблона проекта. В этом примере мы настроим шаблон для приложений Streamlit (cookiecutter_streamlit_ml).

3. Создание структуры шаблона

Внутри папки cookiecutter_streamlit_ml вам понадобятся следующие два ключевых компонента:

• cookiecutter.json — файл JSON, который определяет переменные, которые должны заполнить пользователи (название проекта, автор, версия Python и т. д.).

• {{ cookiecutter.directory_name }} — имя папки-заполнителя, заданное с помощью фигурных скобок. Этот каталог будет содержать структуру и файлы вашего проекта. Когда пользователь создаст новый проект на основе вашего шаблона, Cookiecutter заменит этот заполнитель на указанное пользователем имя. Следите за сохранением фигурных скобок!

69c97348d529705bc480dab449dbbbe3

Ваш cookiecutter.json может выглядеть примерно так:

11214402904ea51c621eddab7b365a1f

Сначала вы определяете переменные в cookiecutter.json, которые будут использоваться во всем сгенерированном проекте. Как минимум, вам понадобится переменная для имени проекта.

Например, я часто ссылаюсь на свой репозиторий GitHub в документации. Вместо того, чтобы вводить его снова и снова, я устанавливаю переменную один раз и позволяю Cookiecutter автоматически заполнять каждый экземпляр. Аналогично, я не хочу писать своё имя в каждом файле readme или документации, поэтому устанавливаю его в начале.

Чтобы избежать проблем с Docker и убедиться, что указана правильная версия Python, я запрашиваю версию Python при создании проекта, гарантируя, что она будет использована в сгенерированном Dockerfile.

Вы можете определить значения по умолчанию для каждого поля в файле cookiecutter.json. Cookiecutter автоматически заменит все вхождения {{ cookiecutter.variable }} в файлах шаблонов на введенные пользователем значения. Вы также можете использовать преобразования, такие как lower() или replace(' ', '_'), чтобы избежать проблем с пробелами в именах каталогов.

В своём шаблоне я предпочитаю предоставлять пользователям подробные инструкции, а не задавать значения по умолчанию. Это помогает тем, кто мог бы пропустить чтение README и сразу перейти к созданию проекта.

4. Создание своего шаблона

Теперь начинается самое интересное — определение шаблона. Вы делаете это раз и навсегда, поэтому стоит потратить на это время, что в конечном итоге значительно сократит время настройки вашего проекта.

Сначала создайте структуру папок для вашего проекта. Это включает в себя создание всех папок, которые вы планируете использовать в проекте. Не волнуйтесь: всё, что отсутствует или окажется лишним, можно будет отредактировать в самом проекте. Пока что вы просто создаёте чертеж; все остальное будет зависеть от проекта.

650964053bece20447651fcf5ff9265b

Подготовив папки, вы можете заполнить их файлами. Они могут быть как пустыми, так и содержать содержимое, которое вы бы постоянно копировали и вставляли из других документов. В этих файлах используйте переменные cookiecutter везде, где требуется динамическая настройка (например, имя проекта или репозитория GitHub). Cookiecutter автоматически заменит эти плейсхолдеры пользовательскими данными, которые будут запрошены при настройке проекта. Это избавит вас от утомительного копирования и вставки, особенно в файлах документации.

ee107eed7f53a5a2cf9599c5885e889b

Наконец, сохраните всю папку cookiecutter_py_streamlit в своём аккаунте GitHub, заархивируйте её в zip-архив или оставьте как есть. В любом случае, теперь вы можете…

5. Используйте свой шаблон

Как только ваш шаблон готов, создание нового проекта становится проще простого:

1. Откройте терминал и перейдите туда, где вы хотите создать проект.

2. Выполните одну из следующих команд:

• Из GitHub:

pipx run cookiecutter gh:ElenJ/cookiecutter_streamlit_ml (замените на свой репозиторий)

• Из локальной папки:

pipx запустить cookiecutter /path/to/template_folder

• Из почтового индекса:

pipx запустить cookiecutter /path/to/template.zip

3. Cookiecutter задаст вам вопросы, заданные в файле cookiecutter.json. Введите ответы или просто нажмите Enter, если вы установили значения по умолчанию.

2905ac3bad2ce47f0554d37d1fcceece

4. Вуаля 🎉 папка вашего нового проекта создана, полная папок, файлов и ссылок, настроенных на основе ваших входных данных.

5e8b1b1abbc6ef943c3f0169dbb9eac8

Вы можете синхронизировать свой новый проект с GitHub, либо отправив его непосредственно из встроенной функции Git вашей IDE, либо создав новый репозиторий на GitHub (убедившись, что он пуст и не содержит файла Readme), а затем переместив туда сгенерированную папку проекта.

Вот и всё! Вы превратили то, что раньше было рутиной, в быстрый процесс и мгновенно создали множество файлов, ожидающих заполнения вашими идеями. Глядя на новый проект, вы определённо почувствуете, что день прошёл продуктивно. Если вы всё ещё ищете рекомендации по лучшим практикам, ознакомьтесь с официальными шаблонами Cookiecutter здесь.

И как всегда: удачного кодирования!

Источник: towardsdatascience.com

✅ Найденные теги: Как, новости
Каталог бесплатных опенсорс-решений, которые можно развернуть локально и забыть о подписках

галерея

Фото сгенерированных лиц: исследование показывает, что люди не могут отличить настоящие лица от сгенерированных
Нейросети построили капитализм за трое суток: 100 агентов Claude заперли…
Скетч: цифровой осьминог и виртуальный мир внутри компьютера с человечком.
Сцена с жестами пальцами, где один жест символизирует "VPN", а другой "KHP".
‼️Paramount купила Warner Bros. Discovery — сумма сделки составила безумные…
Скриншот репозитория GitHub "Claude Scientific Skills" AI для научных исследований.
Структура эффективного запроса Claude с элементами задачи, контекста и референса.
Эскиз и готовая веб-страница платформы для AI-дизайна в современном темном режиме.
ideipro logotyp
Image Not Found
Звёздное небо с галактиками и туманностями, космос, Вселенная, астрофотография.

Система оповещения обсерватории Рубина отправила 800 000 сигналов в первую ночь наблюдений.

Астрономы будут получать оповещения о небесных явлениях в течение нескольких минут после их обнаружения. Теренс О'Брайен, редактор раздела «Выходные». Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной…

Мар 2, 2026
Женщина с длинными тёмными волосами в синем свете, нейтральный фон.

Расследование в отношении 61-фунтовой машины, которая «пожирает» пластик и выплевывает кирпичи.

Обзор компактного пресса для мягкого пластика Clear Drop — и что будет дальше. Шон Холлистер, старший редактор Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной странице вашего…

Мар 2, 2026
Черный углеродное волокно с текстурой плетения, отражающий свет.

Материал будущего: как работает «бессмертный» композит

Учёные из Университета штата Северная Каролина представили композит нового поколения, способный самостоятельно восстанавливаться после серьёзных повреждений.  Речь идёт о модифицированном армированном волокном полимере (FRP), который не просто сохраняет прочность при малом весе, но и способен «залечивать» внутренние…

Мар 2, 2026
Круглый экран с изображением замка и горы, рядом электронная плата.

Круглый дисплей Waveshare для креативных проектов

Круглый 7-дюймовый сенсорный дисплей от Waveshare создан для разработчиков и дизайнеров, которым нужен нестандартный экран.  Это IPS-панель с разрешением 1 080×1 080 пикселей, поддержкой 10-точечного ёмкостного сенсора, оптической склейкой и защитным закалённым стеклом, выполненная в круглом форм-факторе.…

Мар 2, 2026

Впишите свой почтовый адрес и мы будем присылать вам на почту самые свежие новости в числе самых первых