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

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

галерея

ИИ почти всех обгонит? Прогнозы звучат громко, но есть нюансы…
Компания Anthropic получила от Amazon 5 миллиардов долларов и в обмен пообещала инвестировать 100 миллиардов долларов в облачные сервисы.
dummy-img
Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.
Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.
dummy-img
dummy-img
Взаимодействие человека и машины погружается под воду.
Взаимодействие человека и машины погружается под воду.
Image Not Found
Компания Anthropic получила от Amazon 5 миллиардов долларов и в обмен пообещала инвестировать 100 миллиардов долларов в облачные сервисы.

Компания Anthropic получила от Amazon 5 миллиардов долларов и в обмен пообещала инвестировать 100 миллиардов долларов в облачные сервисы.

Вкратце Опубликовано: Изображение предоставлено: Thos Robinson/Getty Images для The New York Times (откроется в новом окне) Джули Борт Компания Anthropic получила от Amazon 5 миллиардов долларов и в обмен пообещала инвестировать 100 миллиардов долларов в облачные сервисы.…

Апр 21, 2026
dummy-img

Как почистить виниловые пластинки (2026): пылесос, ультразвук, чистящий раствор, щетка.

Эти щелчки и треск недопустимы. Приведите свою музыку в порядок с помощью этого удобного руководства. Источник: www.wired.com

Апр 21, 2026
Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.

Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.

Это сегодняшний выпуск The Download, нашей ежедневной новостной рассылки, которая предоставляет вам ежедневную порцию событий в мире технологий. Кибермошенники обходят системы безопасности банков с помощью незаконных инструментов, продаваемых в Telegram. В центре по отмыванию денег в Камбодже…

Апр 21, 2026
Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.

Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.

Это сегодняшний выпуск The Download, нашей ежедневной новостной рассылки, которая предоставляет вам ежедневную порцию событий в мире технологий. Кибермошенники обходят системы безопасности банков с помощью незаконных инструментов, продаваемых в Telegram. В центре по отмыванию денег в Камбодже…

Апр 21, 2026

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