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
Fix python -V verification, install Python with --default
uv python install 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 would actually hit "command not found" -- right
at the guide's "You're all set!" line. Install with --default on all three
platforms, which creates the python and python3 executables the guide
promises, and drop the `uv run python -V` workaround that was papering
over this on Windows.
Verified against uv 0.11.29: a clean install now yields python -V ->
Python 3.14.6 on all platforms.
Also:
- Correct sample output; uv prints no "Searching for Python 3.14" line
and lists the installed executables
- Update 3.14.2 -> 3.14.6, note patch version and timing will vary, and
resolve the "3.12+ recommended" vs installing 3.14 contradiction
- Rewrite venv activation to teach isolation rather than availability,
since --default makes "you can use python directly" a non-statement
- Warn that --default repoints python when installing multiple versions
- Fix two silently-ignored .rumdl.toml keys: disabled-rules -> disable
and MD048.code-fence-style -> MD048.style, which is why intentional
inline HTML was flagged on every run
- Refresh README's stale "complex decision tree" framing
Installing Python always seems to be some complex decision tree experiment. Do you have Windowsor macOS? Is Python already installed? Is it the right version? And so on.
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
-
See the article source via [`install-python.md`](./install-python.md).
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 can't do tech support in general for you. 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
+15Lines changed: 15 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,6 +6,21 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
6
6
7
7
## [Unreleased]
8
8
9
+
### Fixed
10
+
-**`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.
11
+
- 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).
12
+
- Corrected sample command output, which showed a `Searching for Python 3.14` line that uv does not print and omitted the installed executable names.
13
+
- 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.
14
+
- 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.
15
+
- 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.
16
+
- 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.
17
+
18
+
### Added
19
+
- Note that `--default` emits an experimental warning, so readers don't think the install failed.
20
+
- 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.
21
+
- Warning against using `--default` when installing multiple Python versions, plus how to intentionally repoint `python` at a different version later.
22
+
- Explicit "close and reopen your terminal" reminder in each verification step.
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.12+ is recommended these days).
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! In 2025, 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
+
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.
8
8
9
9
## The Modern Approach: Install uv, Then Python
10
10
@@ -39,27 +39,32 @@ After installation completes, **close and reopen your terminal** for the changes
39
39
Now install Python 3.14 with a single command:
40
40
41
41
```powershell
42
-
uv python install 3.14
42
+
uv python install 3.14 --default
43
43
```
44
44
45
+
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.
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
+
53
56
### Step 3. Verify It Works
54
57
58
+
**Close and reopen your terminal**, then run:
59
+
55
60
```powershell
56
-
uv run python -V
61
+
python -V
57
62
```
58
63
59
64
You should see:
60
65
61
-
```
62
-
Python 3.14.2
66
+
```text
67
+
Python 3.14.6
63
68
```
64
69
65
70
**You're all set!** 🎉
@@ -84,31 +89,32 @@ After installation completes, **close and reopen your terminal** for the changes
84
89
Now install Python 3.14 with a single command:
85
90
86
91
```bash
87
-
uv python install 3.14
92
+
uv python install 3.14 --default
88
93
```
89
94
95
+
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.
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.
105
+
98
106
### Step 3. Verify It Works
99
107
108
+
**Close and reopen your terminal**, then run:
109
+
100
110
```bash
101
111
python -V
102
-
103
-
# or
104
-
105
-
uv run python -V
106
112
```
107
113
108
114
You should see:
109
115
110
-
```
111
-
Python 3.14.2
116
+
```text
117
+
Python 3.14.6
112
118
```
113
119
114
120
**You're all set!** 🎉
@@ -133,31 +139,32 @@ After installation completes, **close and reopen your terminal** (or run `source
133
139
Now install Python 3.14 with a single command:
134
140
135
141
```bash
136
-
uv python install 3.14
142
+
uv python install 3.14 --default
137
143
```
138
144
145
+
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.
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.
146
155
147
156
### Step 3. Verify It Works
148
157
158
+
**Close and reopen your terminal** (or run `source ~/.bashrc` or `source ~/.zshrc`), then run:
159
+
149
160
```bash
150
161
python -V
151
-
152
-
# or
153
-
154
-
uv run python -V
155
162
```
156
163
157
164
You should see:
158
165
159
-
```
160
-
Python 3.14.2
166
+
```text
167
+
Python 3.14.6
161
168
```
162
169
163
170
**You're all set!** 🎉
@@ -181,21 +188,31 @@ This creates a `.venv` folder in your project. If Python 3.14 isn't already inst
181
188
### Activating the Virtual Environment
182
189
183
190
**Windows (PowerShell):**
191
+
184
192
```powershell
185
193
.venv\Scripts\Activate.ps1
186
194
```
187
195
188
196
**macOS / Linux:**
197
+
189
198
```bash
190
199
source .venv/bin/activate
191
200
```
192
201
193
-
Once activated, you can use `python`directly:
202
+
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:
194
203
195
204
```bash
196
205
python -V
197
206
```
198
207
208
+
In a project created with `uv venv --python 3.12`, that reports:
209
+
210
+
```text
211
+
Python 3.12.13
212
+
```
213
+
214
+
When you're finished working on the project, run `deactivate` and `python` goes back to your global 3.14.
215
+
199
216
### Installing Packages
200
217
201
218
With uv, installing packages is lightning fast:
@@ -220,7 +237,9 @@ Need multiple Python versions? uv handles that too:
220
237
uv python install 3.12 3.13 3.14
221
238
```
222
239
223
-
List installed versions:
240
+
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.
241
+
242
+
List installed versions, including any that came with your system:
224
243
225
244
```bash
226
245
uv python list
@@ -232,6 +251,12 @@ Create a virtual environment with a specific version:
232
251
uv venv --python 3.12
233
252
```
234
253
254
+
Want to move `python` to a different version later? Re-run the install with `--default`:
0 commit comments