You can have a fully-functional Python development setup on Windows in 10 minutes if you script it right. Here's the modern 2026 stack — Python 3.13, uv for environment management, VS Code, and the supporting tools.
TL;DR — full install
Open Terminal as Administrator:
winget install --id Python.Python.3.13 -e --accept-package-agreements --accept-source-agreements
winget install --id astral-sh.uv -e
winget install --id Microsoft.VisualStudioCode -e
winget install --id Git.Git -e
winget install --id Microsoft.WindowsTerminal -e
winget install --id Microsoft.PowerShell -e
winget install --id GitHub.cli -e
Wait 5 minutes. Done — restart Terminal, you're ready to code.
Step 1 — Install Python
winget install --id Python.Python.3.13 -e
This installs Python 3.13 (latest stable as of mid-2026) system-wide. Verify:
python --version
# Python 3.13.5
pip --version
# pip 24.0 from ...
If python isn't recognized in a new Terminal, the PATH update hasn't propagated. Close + reopen Terminal.
Pin the minor version
Optional but recommended — prevents winget from jumping to Python 3.14 mid-project:
winget pin add --id Python.Python.3.13 --version "3.13.*"
Now winget upgrade --all will only do patch upgrades within 3.13.x. See winget pin guide.
Step 2 — Install uv (replaces pip + poetry + pipenv)
winget install --id astral-sh.uv -e
uv is Astral's Rust-based Python package manager. It replaces pip, pip-tools, poetry, virtualenv, and pipenv in one binary. 10-100× faster than the alternatives.
Verify:
uv --version
# uv 0.4.0
Create a project
mkdir my-project
cd my-project
uv init
This creates pyproject.toml, .python-version, and a starter main.py. Then:
uv add httpx pandas matplotlib
uv run main.py
uv handles the venv invisibly. No need to source venv/bin/activate — uv knows.
Step 3 — Install VS Code
winget install --id Microsoft.VisualStudioCode -e
After install, launch VS Code and install the Python extension pack:
code --install-extension ms-python.python
code --install-extension ms-python.vscode-pylance
code --install-extension charliermarsh.ruff
(Ruff is Astral's blazing-fast linter + formatter — replaces black + flake8 + isort.)
Configure VS Code for Python
Open Ctrl+, (Settings) → Open JSON, add:
{
"python.defaultInterpreterPath": "${workspaceFolder}/.venv/Scripts/python.exe",
"python.analysis.typeCheckingMode": "basic",
"editor.formatOnSave": true,
"[python]": {
"editor.defaultFormatter": "charliermarsh.ruff"
}
}
Now VS Code auto-detects uv's .venv and formats with Ruff on save.
Step 4 — Install Git + GitHub CLI
winget install --id Git.Git -e
winget install --id GitHub.cli -e
After install:
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
git config --global init.defaultBranch main
gh auth login
gh auth login walks you through GitHub authentication; pick HTTPS or SSH.
Step 5 — Set up Windows Terminal
winget install --id Microsoft.WindowsTerminal -e
winget install --id Microsoft.PowerShell -e
Open Windows Terminal Settings (Ctrl+,), set PowerShell 7 (pwsh.exe) as default. Old Windows PowerShell 5.1 is dead — modern Python tooling assumes PS7.
Step 6 — Optional but recommended
CLI ergonomics
winget install Starship.Starship -e
winget install BurntSushi.ripgrep.MSVC -e
winget install sharkdp.fd -e
winget install junegunn.fzf -e
Add to your PowerShell profile ($PROFILE):
Invoke-Expression (&starship init powershell)
See Best CLI tools for the full kit.
Data science extras
winget install Anaconda.Miniconda3 -e # if you need conda
winget install Microsoft.AzureCLI -e # for Azure
winget install Google.CloudSDK -e # for GCP
winget install Amazon.AWSCLI -e # for AWS
A real example: data science project
mkdir analysis
cd analysis
uv init --python 3.13
uv add pandas numpy matplotlib jupyterlab seaborn scikit-learn
uv run jupyter lab
JupyterLab opens in your browser. Save and continue.
A real example: web API
mkdir api
cd api
uv init --python 3.13
uv add fastapi uvicorn httpx
# Create app.py with FastAPI hello world
@"
from fastapi import FastAPI
app = FastAPI()
@app.get('/')
def root():
return { 'hello': 'world' }
"@ | Out-File -Encoding utf8 app.py
uv run uvicorn app:app --reload
Open http://localhost:8000.
Save your setup for future machines
After everything works:
winget export -o python-dev.json --include-versions
Save to OneDrive / GitHub Gist. On next machine:
winget import -i python-dev.json
Also commit your VS Code settings.json — see the fresh Windows 11 setup guide for a more thorough machine-config workflow.
Common pitfalls
"python" not found after install — close and reopen Terminal. PATH only refreshes for new processes.
Multiple Python versions on PATH — Windows ships its own Python redirector (python.exe). If you have both 3.12 and 3.13 installed, python --version may show the older one. Use py -3.13 to force the version, or remove the older with winget uninstall --id Python.Python.3.12.
uv not found — same PATH refresh issue. Or check where uv to see if it landed where expected.
VS Code can't find Python interpreter — Ctrl+Shift+P → "Python: Select Interpreter" → pick the .venv/Scripts/python.exe in your project.
What's next?
- Node.js setup with winget → — sibling guide for JS
- Best CLI tools → — modern terminal toolkit
- Fresh Windows 11 setup → — full setup workflow
- Developer bundle → — one-click install
