copier
A library for rendering project templates.
What it is and what it does
Copier is a library and command-line tool for rendering project templates into new projects. It reads a template directory (local or from a Git URL), asks users questions defined in a copier.yml configuration file, and uses those answers to dynamically generate files and directories with substituted names and content via Jinja2 templating. The tool is designed for both one-time scaffolding and ongoing project evolution—templates can be updated and applied to existing projects.
The package targets two main audiences: template creators who want to avoid repeating boilerplate code, and template consumers who want to quickly start new projects or keep them synchronized with an evolving template. It handles file preservation (not overwriting existing files unless instructed) and includes interactive prompts via questionary, colored output via colorama, and support for YAML-based configuration. With 14 runtime dependencies including Pydantic for validation and Jinja2 for templating, it provides a full-featured templating system suitable for code scaffolding and project lifecycle management.
Use it for:
- Scaffold a new Python package with standardized structure, tests, and CI configuration by running a single copier command.
- Create and maintain a company-wide project template that developers can use to start new microservices with consistent tooling.
- Update an existing project generated from a template when the template itself evolves, preserving local customizations.
- Generate multiple similar projects (e.g., Django apps, FastAPI services) from a single parameterized template.
- Automate project initialization in CI/CD pipelines by calling copier's Python API with predefined answers.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Copier is a template engine and CLI tool that generates projects from templates stored in local paths or Git repositories, with support for dynamic file and directory name substitution via Jinja2.
Yes. Copier is actively maintained (release 10 days ago), has low install friction, carries a permissive MIT license, and no known vulnerabilities. It is well-suited for teams and individuals who need to generate projects from templates or manage template-based code scaffolding. Install it if you create or consume project templates; skip it if you only need simple file copying or one-off project setup.
Install
copier on PyPI
pip
pip install copieruv
uv add copierpoetry
poetry add copierInstalling copier
Before you install
Low install friction with a pure-Python wheel distribution. Active maintenance with a release 10 days ago and last commit on 2026-08-14. Supports Python 3.10 through 3.14, with 14 runtime dependencies including Jinja2, Pydantic, and questionary for interactive prompts.
License in practice
MIT license (permissive) means you can use, modify, and distribute Copier and projects generated from it with minimal restrictions, provided you include the license notice.
Quickstart
pip install copier
from copier import run_copy
run_copy("path/to/template", "path/to/destination")
# or from Git:
run_copy("gh:copier-org/copier.git", "path/to/destination")
Requires Python 3.10 or newer and Git 2.27 or newer installed on your system.
Verify before relying
- Whether the package handles merge conflicts or file updates when regenerating from an evolved template.
- Performance characteristics when processing large templates with many files or complex Jinja2 logic.
- Whether questionary integration supports non-interactive or scripted answer provision.
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 14 — colorama, dunamai, funcy, jinja2-ansible-filters, jinja2, packaging, pathspec, platformdirs, plumbum, pydantic, pygments, pyyaml, questionary, typing-extensions |
| Maintenance | actively maintained — 10 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 2,343,936/month — #3,120 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: copier-9.17.1-py3-none-any.whl
Tags
More Build Tools packages
Provides reusable utilities for Python…
permissive · top 100 on PyPI
tqdmWraps any iterable to display a real-time…
copyleft · top 100 on PyPI
pippip is the standard installer for Python…
permissive · top 100 on PyPI
hatchlingHatchling is a standards-compliant Python build…
permissive · top 100 on PyPI
grpcio-toolsGenerates Python gRPC service stubs and message…
permissive · top 1,000 on PyPI
pre-commitpre-commit is a framework for installing and…
permissive · top 1,000 on PyPI
copier-template-extensionsExtends Copier's Jinja2 templating with a…
permissive · top 15,000 on PyPI
copier-templates-extensionsProvides a Jinja2 extension for Copier that…
permissive · top 15,000 on PyPI
Jinja2Jinja2 is a templating engine that renders…
permissive · top 100 on PyPI
cruftcruft creates new projects from Cookiecutter…
permissive · top 15,000 on PyPI
jinja-cliA command-line tool that renders Jinja2…
copyleft · top 15,000 on PyPI
cookiecutterCookiecutter is a command-line tool that…
unclear · top 5,000 on PyPI
sphinx-jinjaA Sphinx extension that lets you embed Jinja2…
permissive · top 5,000 on PyPI
djlintdjlint formats and lints HTML templates with…
copyleft · top 5,000 on PyPI
md2pdfConverts Markdown files to PDF with custom CSS…
permissive · top 15,000 on PyPI
brand-ymlParses and manages brand guidelines from a YAML…
permissive · top 15,000 on PyPI