Deploy guide · runtime = "python"
Ship Python in ~2 minutes.
Generic Python runtime via Nixpacks. The bundled `python` template scaffolds a FastAPI starter (see [/deploy/fastapi](/deploy/fastapi) for a focused FastAPI guide). Use this page when you're shipping a non-FastAPI Python app — a custom WSGI/ASGI service, a Starlette or Quart app, a small uvicorn-fronted script, or anything that just needs `pip install` to run.
Why Percher fits
- Nixpacks detects `requirements.txt` or `pyproject.toml` automatically and assembles a working image without a Dockerfile.
- Native HTTPS proxy means `requests` and `httpx` reach external APIs out of the box — `HTTPS_PROXY` is honored automatically.
Quick start
bunx percher create my-app --template python
cd my-app
bunx percher publishThe first command scaffolds a working Python project plus a percher.toml. Publish builds and deploys it, then prints the live URL.
percher.toml
The canonical config for a Python app on Percher. bunx percher init generates this automatically when it detects Python in your project.
[app]
name = "my-app"
runtime = "python"
[web]
port = 8000
health = "/health"
Common gotchas
- The `python` template id scaffolds FastAPI — if that's not what you want, run `bunx percher init` in your existing project instead; it'll generate a `percher.toml` from whatever's already there.
- Pin the Python version with a `.python-version` file or `pyproject.toml` — without it, Nixpacks picks whatever it currently defaults to and that can drift.
- The Nixpacks fallback is slower than Percher's native node-build (~60–120 s cold). A dedicated Python builder is on the roadmap; for now, expect longer cold builds than for Node/Bun apps.