For Windows 10, install the latest stable Python 3 release from python.org, choose the 64-bit installer, and tick “Add python.exe to PATH”. That covers most people. The complications come from Windows having several ways to install Python, some of which behave differently, and from libraries that lag a release or two behind.
Which version#
Default choice: the latest stable release. Each version gets five years of support, so a current one will be maintained well past any project you start today.
Pick one release older if: a library you depend on has not published wheels for the newest version yet. This is common in the first few months after a release, particularly for scientific packages with compiled components. The symptom is pip trying to build from source and failing for want of a C compiler.
Match an existing project if you are joining one. Check its pyproject.toml, runtime.txt or CI configuration.
python --version
python -c "import sys; print(sys.version_info)"
32-bit or 64-bit#
64-bit, unless you have a specific reason. Windows 10 is 64-bit on essentially all hardware, and the 32-bit build is limited to about 4 GB of memory — a real constraint for data work. Some packages no longer publish 32-bit wheels at all.
python -c "import platform; print(platform.architecture())"
Where to install from#
| Source | Good for | Watch out for |
|---|---|---|
| python.org | most people | remember the PATH checkbox |
| Microsoft Store | quick start, no admin rights | sandboxed paths confuse some tools |
| Anaconda | data science, non-Python dependencies | large; its own package manager |
| winget | scripted setup | same as python.org underneath |
winget install Python.Python.3.12
Installing from python.org#
Two things to do on the first screen of the installer:
- Tick Add python.exe to PATH. Without it, typing
pythonin a terminal does nothing useful. - Choose Customize installation and confirm pip and the py launcher are selected. Both are on by default.
Then verify in a new terminal — PATH changes only apply to windows opened afterwards:
python --version
python -m pip --version
py --list
The Microsoft Store version#
It installs without administrator rights, which is genuinely useful on a locked-down machine. Two things catch people out.
First, typing python with nothing installed opens the Store rather than reporting an error, which is confusing when you are trying to diagnose a PATH problem. Turn that off in Settings, under App execution aliases.
Second, it redirects file writes into a per-user virtualised folder. Most things work, but some tools that expect a conventional layout behave oddly. For serious development, python.org is the smoother path.
Running several versions#
The py launcher ships with the python.org installer and is the tidy way to manage this:
py --list # everything installed
py # the newest
py -3.11 # a specific version
py -3.11 -m pip install requests
py -3.11 -m venv .venv
Each project gets its own virtual environment built from whichever version it needs:
py -3.12 -m venv .venv
.venv\Scripts\activate
python -m pip install -r requirements.txt
Once activated, plain python means that environment’s interpreter, so the version question stops mattering day to day.
The two errors Windows users hit#
“python is not recognized as an internal or external command”#
Python is not on PATH. Easiest fix: re-run the installer, choose Modify, and make sure the PATH option is ticked. Or add it by hand:
C:\Users\YourName\AppData\Local\Programs\Python\Python312\
C:\Users\YourName\AppData\Local\Programs\Python\Python312\Scripts\
Both folders, and open a new terminal afterwards. Meanwhile, py works whether or not PATH is set.
“running scripts is disabled on this system”#
PowerShell’s execution policy is blocking the virtual environment activation script:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
CurrentUser scope avoids changing the setting machine-wide. Restart PowerShell afterwards.
A sensible setup#
# 1. Install Python from python.org, with PATH ticked
python --version
# 2. Per project
mkdir myproject; cd myproject
py -3.12 -m venv .venv
.venv\Scripts\activate
# 3. Install and record
python -m pip install requests
python -m pip freeze > requirements.txt
Add VS Code with the Python extension, then use “Python: Select Interpreter” to point it at .venv. That combination avoids nearly every version-related problem on Windows.
WSL, if you want it#
wsl --install
Windows Subsystem for Linux gives you a real Linux environment on the same machine. Worth considering if your code will eventually run on a Linux server, or if you keep hitting packages that assume a Unix filesystem. Keep the project files inside the Linux filesystem — working across the Windows mount is noticeably slower.
Questions people ask#
Can I have several versions installed at once?
Yes, and it is normal. The py launcher picks between them, and virtual environments keep each project pinned to one.
Do I need Anaconda?
Only if you need packages with non-Python dependencies that pip struggles with — some geospatial, scientific and GPU libraries. For general Python, plain python.org plus venv is simpler and much smaller.
Should I uninstall an old version before installing a new one?
No. Leave it until you are sure nothing depends on it. Virtual environments make coexistence painless.
Does Windows 10 come with Python?
No. What looks like a Python command on a clean install is a stub that opens the Microsoft Store.
Where to go next#
- Python virtual environments — the habit that makes versions a non-problem.
- VS Code setup for beginners — pointing the editor at the right interpreter.
- Python basics — once it is installed.