Набор CLI-инструментов (pip-compile и pip-sync) для фиксации зависимостей Python в воспроизводимых requirements-файлах и синхронизации с ними окружений.
pypa/setuptools-scm
Инструмент для Python, который определяет версии пакетов по тегам Git или Mercurial и интегрируется с setuptools.
- Звёзды
- 954
- Форки
- 251
- Открытые issues
- 26
- Последний коммит
- 7 часов назад
Что это?
setuptools-scm извлекает версии Python-пакетов из метаданных системы контроля версий проекта — обычно из тегов Git или Mercurial. Вместо того чтобы вручную указывать строку версии в файлах настройки сборки, версию вычисляют во время сборки по последнему тегу и состоянию коммитов. Так версии релизов и сборок для разработки остаются согласованными с историей репозитория.
Пакет интегрируется с setuptools, а также может использоваться отдельно с помощью собственных инструментов. Репозиторий представляет собой монорепозиторий с двумя проектами: самим setuptools-scm и vcs-versioning — базовой библиотекой для определения версий по VCS, которую можно использовать независимо от setuptools.
Для управления зависимостями репозиторий использует uv. В нём есть команды для установки всех пакетов и групп зависимостей, запуска наборов тестов pytest для каждого проекта и сборки общей документации mkdocs.
Ключевые возможности
- 01Определяет версии по тегам Git или Mercurial во время сборки.
- 02Интегрируется с setuptools для сборки Python-пакетов.
- 03Включает vcs-versioning — отдельную библиотеку, которую можно использовать без setuptools.
- 04Включает наборы тестов для запуска с pytest и документацию, собираемую с помощью mkdocs.
Сценарии использования
- Поддерживать версии Python-пакетов в соответствии с тегами Git без ручного редактирования строк версии.
- Определять версии Python-проекта, хранящегося в Git или Mercurial.
- Повторно использовать определение версий на основе VCS в инструментах, не использующих setuptools.
Быстрый старт
- 1
Установите все пакеты и группы зависимостей с помощью uv
uv sync --all-packages --all-groups - 2
Запустите набор тестов
uv run pytest -n12
Темы
Частые вопросы
- Что такое setuptools-scm?
- Инструмент для Python, который определяет версии пакетов по тегам Git или Mercurial и интегрируется с setuptools. setuptools-scm извлекает версии Python-пакетов из метаданных системы контроля версий проекта — обычно из тегов Git или Mercurial. Вместо того чтобы вручную указывать строку версии в файлах настройки сборки, версию вычисляют во время сборки по последнему тегу и состоянию коммитов. Так версии релизов и сборок для разработки остаются согласованными с историей репозитория.
- setuptools-scm можно использовать бесплатно? Какая у него лицензия?
- У setuptools-scm не указана лицензия. Код открыт, но без лицензии нет явного разрешения на его использование — уточните у автора, прежде чем на него полагаться.
- setuptools-scm всё ещё поддерживается?
- Активно поддерживается. Последний коммит в setuptools-scm — 6 нояб. 2026 г..
- Для чего можно использовать setuptools-scm?
- Поддерживать версии Python-пакетов в соответствии с тегами Git без ручного редактирования строк версии. Определять версии Python-проекта, хранящегося в Git или Mercurial. Повторно использовать определение версий на основе VCS в инструментах, не использующих setuptools.
- Как установить setuptools-scm?
- Установите все пакеты и группы зависимостей с помощью uv: uv sync --all-packages --all-groups Запустите набор тестов: uv run pytest -n12
- Где скачать setuptools-scm?
- Исходный код и инструкции по установке — на GitHub: https://github.com/pypa/setuptools-scm
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Современный расширяемый менеджер Python-проектов для сборки, работы с окружениями, тестирования, линтинга, управления версиями и публикации.
Универсальный CLI-инструмент для автоматизации повышения версии, создания Git-тегов и релизов в GitHub и GitLab, генерации changelog и публикации в npm.
Генератор Python-проектов, который создаёт готовые к установке и публикации в PyPI пакеты с настроенными tox, pytest, документацией Sphinx и версионированием через Git.
Хранит Jupyter notebooks в виде обычных файлов Markdown или скриптов Python, Julia и R, чтобы Git показывал наглядные diff.
Коллекция шаблонов .gitignore для языков программирования, фреймворков, редакторов и операционных систем, используемая на страницах GitHub для создания репозиториев.