You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Move the Unreleased entries into a dated release matching the existing
YYYY.MM.DD - slug convention, and leave Unreleased empty for next time.
Prose:
- Replace em dashes with plain hyphens or shorter sentences across the
guide and README, keeping dashes where they earn their place
- Tighten the --default explanation, which used "default" three times
- Fix a comma splice in the experimental-warning note
- "which interpreter python points to" rather than tangling Python/python
Step 3 no longer opens by telling readers to close and reopen a terminal
they already reopened in Step 1. Once ~/.local/bin is on PATH, python
resolves as soon as the install finishes (verified with an isolated PATH),
so the reopen is now a fallback after the expected output, where someone
who actually needs it will look.
Two changelog entries were stale: one claimed we added the reopen reminder
we ended up removing, and the fmt/MD044 work was unrecorded.
Installing Python used to be a complex decision tree experiment. Windows, macOS, or Linux? Is Python already installed? Is it the right version? Anaconda, Homebrew, or python.org? Not anymore — these days it's two commands on every platform, thanks to [uv](https://docs.astral.sh/uv/).
3
+
Installing Python used to be a complex decision tree experiment. Windows, macOS, or Linux? Is Python already installed? Is it the right version? Anaconda, Homebrew, or python.org? Not anymore. These days it's two commands on every platform, thanks to [uv](https://docs.astral.sh/uv/).
4
4
5
5
This repo is a place to allow for feedback and conversations around our **[Installing Python from Talk Python Training how-to article](https://training.talkpython.fm/installing-python)**.
6
6
7
7
See the article source via [`install-python.md`](./install-python.md), and notable changes in [`change-log.md`](./change-log.md).
8
8
9
-
Post an issue if you have a problem or comment *with the article* — note that we generally can't provide tech support. If you have a fix, PRs are accepted if they are a good fit.
9
+
Post an issue if you have a problem or comment *with the article*. Note that we generally can't provide tech support. If you have a fix, PRs are accepted if they are a good fit.
Copy file name to clipboardExpand all lines: change-log.md
+10-2Lines changed: 10 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,22 +6,30 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
6
6
7
7
## [Unreleased]
8
8
9
+
## [2026.07.16] - python-default-flag
10
+
9
11
### Fixed
10
12
11
13
-**`python -V` now actually works after following the guide.**`uv python install 3.14` only creates a versioned `python3.14` executable, so the macOS and Linux verification steps told readers to run `python -V` and expect success when they'd get `command not found`. All three platforms now install with `--default`, which creates the `python` and `python3` executables the guide promises.
12
14
- Verification step is now consistent across Windows, macOS, and Linux (previously Windows used `uv run python -V` while macOS and Linux claimed bare `python -V` worked).
13
15
- Corrected sample command output, which showed a `Searching for Python 3.14` line that uv does not print and omitted the installed executable names.
14
16
- Updated Python version references from 3.14.2 to 3.14.6, and resolved the intro contradiction between "3.12+ is recommended" and installing 3.14.
15
17
- Rewrote the virtual environment explanation. It said "once activated, you can use `python` directly," which was only meaningful back when bare `python` didn't work at all. It now teaches what activation actually does: `python` switches from your global 3.14 to the project's interpreter, which may be a different version entirely.
16
-
- Refreshed the README, which still described the guide as a "complex decision tree" — the exact thing the 2025 rewrite eliminated. Also added Linux (the guide covers it), linked the changelog, and fixed punctuation.
18
+
- Refreshed the README, which still described the guide as a "complex decision tree". That's the exact thing the 2025 rewrite eliminated. Also added Linux (the guide covers it), linked the changelog, and fixed punctuation.
17
19
- Fixed two silently-ignored keys in `.rumdl.toml`: `disabled-rules` → `disable` and `MD048.code-fence-style` → `MD048.style`. Because the disable list never loaded, the guide's intentional inline HTML was being flagged on every run.
20
+
- Stopped `rumdl fmt` from rewriting the repo link to display `https://GitHub.com/...`. MD044's proper-name rule was capitalizing the URL in the link text on every run. The link text is now descriptive rather than a raw URL.
18
21
19
22
### Added
20
23
21
24
- Note that `--default` emits an experimental warning, so readers don't think the install failed.
22
25
- Note that the patch version and install time in sample output will differ, so the page doesn't read as wrong the moment 3.14.7 ships.
23
26
- Warning against using `--default` when installing multiple Python versions, plus how to intentionally repoint `python` at a different version later.
24
-
- Explicit "close and reopen your terminal" reminder in each verification step.
27
+
-`PATH` troubleshooting fallback in each verification step, phrased per platform, for anyone whose terminal hasn't picked up the new executables.
28
+
29
+
### Changed
30
+
31
+
- Prose pass over the guide and README: replaced em dashes with plain hyphens or shorter sentences, tightened the `--default` explanation, and corrected the "two steps" promise that was followed by three.
32
+
- Applied `rumdl fmt` for consistent list markers, horizontal rules, and blank lines.
Welcome soon-to-be Python user! Python is one of the easiest programming languages to learn and grow with. But there can be a bump right at the beginning: **making sure you have Python installed** with a sufficiently new version (3.14 is the current release, and it's what we'll install below).
5
+
Welcome, soon-to-be Python user! Python is one of the easiest programming languages to learn and grow with. But there can be a bump right at the beginning: **making sure you have Python installed** with a sufficiently new version (3.14 is the current release, and it's what we'll install below).
6
6
7
-
Good news! These days, installing Python has become incredibly simple thanks to **[uv](https://docs.astral.sh/uv/)** -- a blazing-fast Python package and project manager that also handles Python installation. With uv, you get **one tool** that works the same way on Windows, macOS, and Linux. [Hear all about it](https://talkpython.fm/episodes/show/476/unified-python-packaging-with-uv) on Talk Python.
7
+
The good news is that these days, installing Python is incredibly simple thanks to **[uv](https://docs.astral.sh/uv/)**, a blazing-fast Python package and project manager that also handles Python installation. With uv, you get **one tool** that works the same way on Windows, macOS, and Linux. [Hear all about it](https://talkpython.fm/episodes/show/476/unified-python-packaging-with-uv) on Talk Python.
8
8
9
9
## The Modern Approach: Install uv, Then Python
10
10
11
-
The process is just two steps:
11
+
The process is just two commands:
12
12
13
13
1.**Install uv** (one command)
14
14
2.**Install Python with uv** (one command)
@@ -43,7 +43,7 @@ Now install Python 3.14 with a single command:
43
43
uv python install 3.14 --default
44
44
```
45
45
46
-
The `--default` flag is what gives you a plain `python` command (rather than only `python3.14`), so this is the version you'll get by default from now on.
46
+
The `--default` flag gives you a plain `python` command rather than only `python3.14`, so this becomes the Python you get from now on.
47
47
48
48
You'll see output like:
49
49
@@ -52,12 +52,10 @@ Installed Python 3.14.6 in 2.1s
Your exact patch version and install time will differ — Python ships regular patch releases, so 3.14.7 or later is just as good. uv also prints a `warning:` noting that `--default` is experimental. That's expected, and nothing is wrong: the flag works, it just isn't finalized yet.
55
+
Your exact patch version and install time will differ. Python ships regular patch releases, so 3.14.7 or later is just as good. uv also prints a `warning:` noting that `--default` is experimental. That's expected, and nothing is wrong. The flag works; it just isn't finalized yet.
56
56
57
57
### Step 3. Verify It Works
58
58
59
-
**Close and reopen your terminal**, then run:
60
-
61
59
```powershell
62
60
python -V
63
61
```
@@ -68,6 +66,8 @@ You should see:
68
66
Python 3.14.6
69
67
```
70
68
69
+
If PowerShell says `python` isn't recognized, close and reopen your terminal so it picks up the updated `PATH`, then try again.
@@ -94,7 +94,7 @@ Now install Python 3.14 with a single command:
94
94
uv python install 3.14 --default
95
95
```
96
96
97
-
The `--default` flag is what gives you a plain `python` command (rather than only `python3.14`), so this is the version you'll get by default from now on.
97
+
The `--default` flag gives you a plain `python` command rather than only `python3.14`, so this becomes the Python you get from now on.
98
98
99
99
You'll see output like:
100
100
@@ -103,12 +103,10 @@ Installed Python 3.14.6 in 1.9s
Your exact patch version and install time will differ — Python ships regular patch releases, so 3.14.7 or later is just as good. uv also prints a `warning:` noting that `--default` is experimental. That's expected, and nothing is wrong: the flag works, it just isn't finalized yet.
106
+
Your exact patch version and install time will differ. Python ships regular patch releases, so 3.14.7 or later is just as good. uv also prints a `warning:` noting that `--default` is experimental. That's expected, and nothing is wrong. The flag works; it just isn't finalized yet.
107
107
108
108
### Step 3. Verify It Works
109
109
110
-
**Close and reopen your terminal**, then run:
111
-
112
110
```bash
113
111
python -V
114
112
```
@@ -119,6 +117,8 @@ You should see:
119
117
Python 3.14.6
120
118
```
121
119
120
+
If you get a `command not found` error, close and reopen your terminal so it picks up the updated `PATH`, then try again.
@@ -145,7 +145,7 @@ Now install Python 3.14 with a single command:
145
145
uv python install 3.14 --default
146
146
```
147
147
148
-
The `--default` flag is what gives you a plain `python` command (rather than only `python3.14`), so this is the version you'll get by default from now on.
148
+
The `--default` flag gives you a plain `python` command rather than only `python3.14`, so this becomes the Python you get from now on.
149
149
150
150
You'll see output like:
151
151
@@ -154,12 +154,10 @@ Installed Python 3.14.6 in 1.5s
Your exact patch version and install time will differ — Python ships regular patch releases, so 3.14.7 or later is just as good. uv also prints a `warning:` noting that `--default` is experimental. That's expected, and nothing is wrong: the flag works, it just isn't finalized yet.
157
+
Your exact patch version and install time will differ. Python ships regular patch releases, so 3.14.7 or later is just as good. uv also prints a `warning:` noting that `--default` is experimental. That's expected, and nothing is wrong. The flag works; it just isn't finalized yet.
158
158
159
159
### Step 3. Verify It Works
160
160
161
-
**Close and reopen your terminal** (or run `source ~/.bashrc` or `source ~/.zshrc`), then run:
162
-
163
161
```bash
164
162
python -V
165
163
```
@@ -170,6 +168,8 @@ You should see:
170
168
Python 3.14.6
171
169
```
172
170
171
+
If you get a `command not found` error, close and reopen your terminal (or run `source ~/.bashrc` or `source ~/.zshrc`) so it picks up the updated `PATH`, then try again.
172
+
173
173
**You're all set!** 🎉
174
174
175
175
_________________________
@@ -186,7 +186,7 @@ Navigate to your project folder and run:
186
186
uv venv --python 3.14
187
187
```
188
188
189
-
This creates a `.venv` folder in your project. If Python 3.14 isn't already installed, **uv will automatically download and install it for you**.
189
+
This creates a `.venv` folder in your project. If Python 3.14 isn't already installed, **uv will automatically download and install it for you**. On a fast connection, this can take as little as 2-3 seconds.
190
190
191
191
### Activating the Virtual Environment
192
192
@@ -202,7 +202,7 @@ This creates a `.venv` folder in your project. If Python 3.14 isn't already inst
202
202
source .venv/bin/activate
203
203
```
204
204
205
-
Activating doesn't just make `python` available — it changes which Python`python`means. Instead of the global 3.14 you installed earlier, it now points at this project's interpreter, which can be an entirely different version:
205
+
Activating doesn't just make `python` available - it changes which interpreter`python`points to. Instead of the global 3.14 you installed earlier, you get this project's own Python, which can be an entirely different version:
206
206
207
207
```bash
208
208
python -V
@@ -240,7 +240,7 @@ Need multiple Python versions? uv handles that too:
240
240
uv python install 3.12 3.13 3.14
241
241
```
242
242
243
-
Note there's no `--default` here. Only one version at a time can own the plain `python` command, so leave `--default` off when installing extra versions — otherwise you'll quietly repoint `python` at whichever version you installed last. Each version is always reachable by its full name (`python3.12`, `python3.13`) regardless.
243
+
Note there's no `--default` here. Only one version at a time can own the plain `python` command, so leave `--default` off when installing extra versions. Otherwise you'll quietly repoint `python` at whichever version you installed last. Each version is always reachable by its full name (`python3.12`, `python3.13`) regardless.
244
244
245
245
List installed versions, including any that came with your system:
246
246
@@ -266,11 +266,11 @@ _________________________
266
266
267
267
**[uv](https://docs.astral.sh/uv/)** is developed by [Astral](https://astral.sh/), the creators of [Ruff](https://docs.astral.sh/ruff/) (the popular Python linter). It's designed to be:
268
268
269
-
- ⚡️ **Blazing fast** -- 10-100x faster than pip
270
-
- 🐍 **Python version manager** -- installs and manages Python itself
271
-
- 📦 **Package manager** -- replaces pip, pip-tools, and virtualenv
- 🖥️ **Cross-platform** - works identically on Windows, macOS, and Linux
274
274
275
275
One tool. No complexity. Just Python.
276
276
@@ -280,4 +280,4 @@ _________________________
280
280
281
281
If you find a problem or have a suggestion to make this page better, please open an issue on GitHub. Note that this is not intended for tech support but rather for genuine, broadly applicable improvements to the instructions:
0 commit comments