setuptools
setuptools is a free Python packaging library for preparing projects to share and install.
What setuptools is
setuptools is a free Python packaging library for preparing projects to share and install. It can serve as a build backend and discover packages and namespaces, while allowing maintainers to control which packages are distributed. It supports build-system requirements and required or optional dependencies, including version restrictions and environment markers, as well as dependency groups. Configured entry points can create scripts during installation, including console commands and plugin entry points. Editable installs let changes to source files take effect without rebuilding and reinstalling the package, and setuptools can build C and C++ extension modules. Its documentation describes using it with pip, build, and PyPI when building and distributing Python packages. The project identifies modern PyPA-standard APIs and documented customization APIs as its most stable supported interfaces. The current PyPI listing requires Python 3.10 or later. It runs on Linux, macOS, and Windows. The listed plan is free, and professional support is available through a Tidelift Subscription.
Good
- Free Python packaging library
- Automatically discovers packages and namespaces
- Supports editable installs
- Can build C and C++ extension modules
- Runs on Linux, macOS, and Windows
Watch out
- Requires Python 3.10 or later
- No lockfile support
- No environment management
Who it suits
It suits Python maintainers who need to package projects for distribution, configure dependencies, or build extension modules. It is also relevant when working with pip, build, and PyPI.
Verdict
setuptools covers core packaging tasks, from discovery and dependency declarations to entry points and extension modules. Check the Python 3.10-or-later requirement and its stated limits around lockfiles and environment management.
Plans and prices
From setuptools's own pricing page, checked 8 Oct 2026.
| Plan | Price | What it gives you |
|---|---|---|
| Setuptools | Free | Python packaging library |
The facts
Each one read from setuptools's own pages, with the date it was checked.
What it does
- Build backend
- Setuptools can serve as the packaging build backend for Python projects.checked 8 Oct 2026
- C and C++ extensions
- Setuptools can build C and C++ extension modules.checked 8 Oct 2026
- Compatibility
- The project identifies modern PyPA-standard APIs and documented customization APIs as its most stable supported interfaces.checked 8 Oct 2026
- Compatibility limits
- The current PyPI listing states that setuptools requires Python 3.10 or later.checked 8 Oct 2026
- Dependencies
- Setuptools supports build system requirements, required dependencies, and optional dependencies with version restrictions and environment markers.checked 8 Oct 2026
- Editable installs
- Setuptools supports editable installs that let source changes take effect without rebuilding and reinstalling the package.checked 8 Oct 2026
- Entry points
- Setuptools can create scripts during installation from configured entry points, including console commands and plugin entry points.checked 8 Oct 2026
- Integrations
- The documentation describes using setuptools with pip, build, and PyPI as part of building and distributing Python packages.checked 8 Oct 2026
- Package discovery
- Setuptools can automatically discover packages and namespaces and lets maintainers customize which packages are distributed.checked 8 Oct 2026
- Purpose
- Setuptools is a library designed to facilitate packaging Python projects for sharing and installation.checked 8 Oct 2026
- Security maintenance
- The release history documents security fixes, including a fix preventing archive members from being extracted outside the requested directory.checked 8 Oct 2026
- Support
- Professional support for setuptools is available through a Tidelift Subscription.checked 8 Oct 2026


