setuptools-download
setuptools plugin to download external files
What it is and what it does
setuptools-download is a setuptools plugin that automates the download and integration of external files into a Python package during installation. It runs at build time, fetching files from URLs and verifying them against SHA256 checksums before inclusion. The plugin supports platform-specific downloads via PEP 508 markers (checking OS, platform, and architecture), allowing you to bundle different binaries or data for Linux, macOS, and Windows in a single package definition. It can also extract archives (tar or zip) and place specific files from them into your package.
The plugin is configured declaratively through setuptools metadata (setup.cfg or pyproject.toml), making it suitable for projects that need to distribute pre-built binaries, large datasets, or platform-specific tools alongside Python code without committing those files to version control.
Use it for:
- Bundle platform-specific compiled binaries (e.g., different CPU architectures) with a Python package, downloading only what matches the target system.
- Include large data files or models in a package by downloading them at install time rather than storing them in the repository.
- Distribute a tool that wraps native executables, downloading the correct binary for the user's OS and architecture automatically.
- Fetch and extract portions of a remote archive (e.g., a specific directory from a tarball) into your package structure during setup.
- Verify file integrity during installation by enforcing SHA256 checksums on all downloaded content.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
A setuptools plugin that downloads external files during package setup, with support for checksums, platform-specific selection, and archive extraction.
Yes, if you need to download external files during package installation with integrity verification and platform-specific selection. The low install friction, active maintenance, permissive license, and zero known vulnerabilities make it a safe choice. Not necessary if your package is pure Python or already handles file distribution through other means.
Install
setuptools-download on PyPI
pip
pip install setuptools-downloaduv
uv add setuptools-downloadpoetry
poetry add setuptools-downloadInstalling setuptools-download
Before you install
Low friction: pure Python wheel with only setuptools as a runtime dependency. Actively maintained with recent commits; last release was about a year ago.
License in practice
MIT license permits unrestricted use, modification, and distribution with minimal restrictions—suitable for any project type.
Quickstart
# In setup.cfg or pyproject.toml:
# [options]
# setup_requires = setuptools-download
#
# [setuptools_download]
# download_data_files =
# [path/to/file.txt]
# url = https://example.com/file.txt
# sha256 = <hash>
# Then run: pip install .
Requires Python >=3.8 and setuptools to be available during the build phase.
Verify before relying
- Whether the plugin works with modern setuptools versions and PEP 517/518 build backends.
- Performance characteristics when downloading large files or many files in parallel.
- Behavior when network connectivity is unavailable during setup.
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.8) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 1 — setuptools |
| Maintenance | actively maintained — 768 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 1,654,916/month — #3,679 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: setuptools_download-1.1.0-py2.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
setuptools-gitA setuptools plugin that automatically includes…
permissive · top 15,000 on PyPI
checksumdirComputes a single hash digest of all file…
permissive · top 15,000 on PyPI
urllib3-secure-extraDetects whether urllib3 was installed with the…
permissive · top 5,000 on PyPI
setuptools-git-versioningAutomatically generates PEP 440-compliant…
permissive · top 5,000 on PyPI
nbzipnbzip adds a button to Jupyter that zips and…
permissive · top 15,000 on PyPI
tzsttzst creates and extracts tar archives…
permissive · top 15,000 on PyPI
fastdownloadDownloads, verifies, and extracts archives from…
permissive · top 15,000 on PyPI
rpmfileInspect and extract files from RPM archive…
permissive · top 5,000 on PyPI
setuptools-protobufA setuptools plugin that automates compilation…
permissive · top 15,000 on PyPI
setuptools-scm-git-archiveA setuptools_scm plugin that extracts version…
permissive · top 5,000 on PyPI