❔ = might be best as an [[extension]]
> There’s a pattern in how complex technology matures. Early on, teams make their own choices: different tools, different abstractions, different ways of reasoning about failure. It looks like flexibility but at scale it reveals itself as fragmentation.
>
> The fix is never just more capability; it’s shared operational philosophy. Kubernetes proved this. It didn’t just answer “how do we run containers?” It answered “how do we change running systems safely?” The community built those patterns, hardened them, and made them the baseline.
From "[What’s new with Microsoft in open-source and Kubernetes at KubeCon + CloudNativeCon Europe 2026](https://opensource.microsoft.com/blog/2026/03/24/whats-new-with-microsoft-in-open-source-and-kubernetes-at-kubecon-cloudnativecon-europe-2026/)"
# Developer workflows
## Fresh machine
1. [ ] [[Install Python]]
2. [ ] [[Virtual environment location|Create virtual environment]]
3. [ ] [[Install dependencies]] ❔
1. [ ] Lock file
2. [ ] `pyproject.toml`❔
## 2nd project on machine
1. [ ] Find Python
1. [ ] [[Install Python|Installed Python]]
2. [ ] Registry (Windows)
3. [ ] `PATH`
2. [ ] [[Virtual environment location|Create virtual environment]]
3. [[Install dependencies]] ❔
## Returning to a project
Assuming [[Virtual environment location|`.venv`]] already exists.
1. [ ] Check virtual environment is still valid
1. `pyvenv.cfg`
2. Any symlinks are still valid
2. [ ] [[Sync virtual environment]] ❔
# User workflows
## Script with [inline script metadata](https://packaging.python.org/en/latest/specifications/inline-script-metadata/)
AKA "just run this script already!"
Should:
1. Install Python
2. Create ephemeral environment
3. Install dependencies
4. Run code
### Ideal
Using [[run]]:
```terminal
$ py run script.py
```
Or using [[script]]:
```terminal
$ py script script.py
```
### [[extension|Acceptable]]
```terminal
$ py extension install run
$ py run script.py
```
## Install a tool
AKA "why can't we have `npm install -g`, but better?"
Should:
1. Install Python
2. Create an environment
3. Install the tool into the environment
4. Put the tool on `$PATH`
### [[tool|Ideal]]
```terminal
$ py tool install black
$ black -h
```
### [[extension|Acceptable]]
```terminal
$ py extension install tool
$ py tool install black
$ black -h
```
## Run this tool once
AKA "I'm not ready for a commitment as serious as installation."
Should:
1. Install Python
2. Create ephemeral environment (cached for performance)
3. Run tool
### Ideal
```terminal
$ pyx black -h
```
### [[extension|Acceptable]]
```terminal
$ py extension install exec
$ py x black -h
```