versioneer
Easy VCS-based management of project version strings
Decision gist · record as of 2026-08-14
Yes. Versioneer is actively maintained, has no runtime dependencies, and solves a genuine release-process pain point. Use it if you manage a setuptools-based project with git tags and want to eliminate manual version-string updates. The vendored mode is stable; the build-time dependency mode is marked experimental, so prefer vendored for production projects unless you have a specific reason to avoid vendoring.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires a git repository and setuptools-based project structure; versioneer must be run in your source tree and results committed.
- Low friction: pure Python wheel with no runtime dependencies.
- Actively maintained with recent commits; last release was 2023-07-07 but repo shows ongoing activity as of 2026-06-01.
License · maintenance · safety
permissive license (permissive) — Released into the public domain under the Unlicense (permissive). No restrictions on use, modification, or distribution for any purpose, commercial or otherwise.
last release 2023-07-07 (1134 days) · last repo commit 2026-06-01 · 1,092 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 4,837,449 downloads/mo, #2,218 on PyPI
Alternatives
Verify before relying
pip install versioneer
versioneer install --vendor
# In your project's __init__.py:
from ._version import get_versions
__version__ = get_versions()['version']- Whether the build-time dependency mode is production-ready or still experimental
- Performance impact of dynamic version lookup at import time in large projects
- Compatibility with non-setuptools build systems (e.g., hatch, flit, poetry)
What it is and what it does
Versioneer is a build-time tool that automatically manages version strings in Python projects by querying your version-control system instead of requiring manual edits. It installs files into your project that dynamically compute version information from git tags and commit metadata at import time, and handles version computation during setup and distribution.
The tool supports two installation modes: vendored (copies versioneer into your repo) and build-time dependency (declares versioneer as a build requirement). It generates version strings in PEP 440 format by default, including tag name for releases and additional metadata (commit distance, commit hash, dirty state) for development builds. This eliminates the error-prone step of manually updating version strings before each release—you only need to tag your repository.
Use it for
- Automatically derive a package's version from the latest git tag without manual edits
- Generate version strings for sdist tarballs that reflect the exact commit they were built from
- Provide developers with version info that includes commit hash and dirty state for debugging
- Simplify release workflows by removing the 'update version string' step from your checklist
- Support multiple version-string styles via configuration
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
Versioneer is actively maintained, has no runtime dependencies, and solves a genuine release-process pain point. Use it if you manage a setuptools-based project with git tags and want to eliminate manual version-string updates. The vendored mode is stable; the build-time dependency mode is marked experimental, so prefer vendored for production projects unless you have a specific reason to avoid vendoring.
Install
versioneer on PyPI
Before you install
Low friction: pure Python wheel with no runtime dependencies. Actively maintained with recent commits; last release was 2023-07-07 but repo shows ongoing activity as of 2026-06-01.
Requires a git repository and setuptools-based project structure; versioneer must be run in your source tree and results committed.
License in practice
Released into the public domain under the Unlicense (permissive). No restrictions on use, modification, or distribution for any purpose, commercial or otherwise.
Quickstart
pip install versioneer
versioneer install --vendor
# In your project's __init__.py:
from ._version import get_versions
__version__ = get_versions()['version']
Verify before relying
- Whether the build-time dependency mode is production-ready or still experimental
- Performance impact of dynamic version lookup at import time in large projects
- Compatibility with non-setuptools build systems (e.g., hatch, flit, poetry)
Package facts
| License | permissive license permissive |
| Python support | Supports the current Python release >=3.7 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | None |
| Maintenance | Actively maintained 1,134 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 4,837,449 / month, #2,218 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | License :: OSI Approved :: The Unlicense (Unlicense)Programming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9 |
Evidence: versioneer-0.29-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “automatic version string generation”
- versioneerVersioneer automates version management in setuptools-based Python…
- autosemverAutomatically generates semantic versions for Python packages by…
- dunamaiDunamai generates dynamic, standards-compliant version strings from…
Give your agent the search over MCP, or paste the wish link into any chat.
More Build Tools packages
Provides reusable utilities for Python packaging interoperability, including version handling, specifiers, markers, requirements, tags, and metadata parsing according to standards like PEP 440 and PEP 425.
Wraps any iterable to display a real-time progress bar in the terminal or Jupyter notebook, showing iteration count, elapsed time, and estimated time remaining.
pip is the standard installer for Python packages, enabling you to download and install packages from the Python Package Index and other indexes into your Python environment.
Hatchling is a standards-compliant Python build backend that handles packaging, metadata, and distribution of Python projects when configured in a project's pyproject.toml file.
Generates Python gRPC service stubs and message classes from Protocol Buffer definitions, enabling developers to build gRPC clients and servers.
pre-commit is a framework for installing and running git hooks written in any language before commits are made, automating code quality and validation checks across multi-language projects.
Install it if your team needs consistent, automated validation at commit time.
See also versioneer-518 · charm-refresh-build-version · versioningit · vcs-versioning · setuptools-git-versioning · hatch-vcs · dunamai · setupmeta · towncrier · read-version