Python 3.15 is the current stable series, and the right install method depends on your operating system. Windows uses the Python install manager, macOS uses Homebrew or uv, and Linux uses the distro package or uv. This guide covers each path, then shows how to pin versions, isolate projects with venv, and avoid the mistakes that break system Python.
Quick Takeaways
- Current stable: Python 3.15 (released Oct. 9, 2026). Python 3.14 is also in bugfix status. Python 3.10 reached end-of-life on Oct. 1, 2026.
- Windows: Use the Python install manager (
py install). The traditional.exeinstaller stops shipping with Python 3.16. - macOS and Linux: Use uv (
uv python install 3.15) for per-project versions. Use Homebrew orapt/dnfonly for the system-level interpreter. - Every OS: Never
pip installinto the interpreter your OS owns. Create a virtual environment per project.
| Platform | Best Method | Multi-Version Support | Admin Rights |
|---|---|---|---|
| Windows | Python install manager (py) |
Yes | No |
| macOS | Homebrew or uv | Yes (with uv) | No |
| Linux | Distro package or uv | Yes (with uv) | sudo for packages |
| Any OS | uv | Yes | No |
Which Python Version Should You Install?
Python publishes yearly feature releases every October. As of November 2026, python.org lists these statuses:
| Series | Status | End of Support |
|---|---|---|
| 3.15 | Bugfix | Oct. 2031 |
| 3.14 | Bugfix | Oct. 2030 |
| 3.13 | Security only | Oct. 2029 |
| 3.12 | Security only | Oct. 2028 |
| 3.11 | Security only | Oct. 2027 |
Pick 3.15 for new projects. Pick 3.14 if a dependency has not published wheels for 3.15 yet. Avoid anything below 3.11. Check your target library’s classifiers on PyPI before you commit.
Run this before any install to see what you already have:
# macOS / Linux
python3 --version
# Windows (PowerShell or cmd)
py --version
The command prints a version string such as Python 3.12.3. If it prints nothing or opens the Microsoft Store, no usable interpreter exists yet.
Install Python on Windows
Method 1: Python Install Manager (Recommended)
The Python install manager (pymanager) is the official Windows tool for installing and launching runtimes. It replaces the old py launcher and runs without admin rights. It supports Windows 10 and later.
Install it from the Microsoft Store, or with WinGet:
# Install the Python install manager
winget install 9NQ7512CXL7T
Then install a runtime:
# Install the latest CPython 3.15
py install 3.15
# List installed and available runtimes
py list
# Run a specific version
py -V:3.15 --version
py install downloads the runtime and registers it. py list shows what is installed. py -V:3.15 launches that exact version. On first launch, a configuration checker runs. You can rerun it with py install --configure.
The manager updates itself within a day of each release. You do not need to download it again.
Windows PATH and Script Behavior
Since version 26.0, the manager generates global shortcut executables for installed packages that expose entry points. They land in %LOCALAPPDATA%\Python\bin. The first-run check asks whether to add that folder to PATH. Say yes if you want commands like pip available globally.
You can still call pip explicitly on any Windows setup:
py -m pip --version
This prints the pip version and the interpreter it belongs to. Prefer py -m pip over bare pip. It guarantees pip targets the interpreter you named.
Method 2: uv on Windows
Use uv if you want one tool for Python versions, dependencies, and virtual environments.
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
uv python install 3.15
uv installs managed builds from the Astral python-build-standalone project. On Windows it registers them in the registry (PEP 514), so the py launcher can see them.
Install Python on macOS
macOS ships a python3 stub that prompts you to install Xcode Command Line Tools. Do not build projects on it. Install your own interpreter.
Method 1: Homebrew
# Install Homebrew first if needed: https://brew.sh
brew install python
python3 --version
Homebrew installs the current formula and puts python3 and pip3 on your PATH. It upgrades Python when you run brew upgrade. That can silently change the interpreter behind existing virtual environments. Treat Homebrew Python as a tool runtime, not a project runtime.
Method 2: uv (Best for Project Work)
curl -LsSf https://astral.sh/uv/install.sh | sh
uv python install 3.15
uv downloads a self-contained build into its own directory. It does not touch Homebrew or the system. Install several versions side by side:
uv python install 3.13 3.14 3.15
uv python list --only-installed
uv python list --only-installed prints every interpreter uv manages, with its full path.
Method 3: python.org Installer
Download the macOS .pkg from python.org and run it. It works, but it gives you no built-in upgrade or multi-version tooling. Use it when you cannot use Homebrew or uv.
Install Python on Linux
Most distros ship Python 3 already. That copy belongs to the OS. Package managers and system tools depend on it. Leave it alone.
Method 1: Distro Packages
# Debian / Ubuntu
sudo apt update
sudo apt install python3 python3-venv python3-pip
# Fedora
sudo dnf install python3 python3-pip
# Arch
sudo pacman -S python python-pip
On Debian and Ubuntu, python3-venv is a separate package. Without it, python3 -m venv fails with an ensurepip error. Distro repositories lag behind python.org, so you may get an older minor version.
Method 2: uv (Any Version, No sudo)
curl -LsSf https://astral.sh/uv/install.sh | sh
uv python install 3.15
This gets you the newest release on any distro, with no PPA and no compile step.
Method 3: pyenv (Builds from Source)
pyenv compiles each version locally. It works, but it needs build dependencies (compiler, OpenSSL, zlib headers) and takes minutes per install. Choose it only if you need a custom-compiled interpreter.
Compare the Installation Methods
| Method | Speed | Multi-Version | Isolation from OS | Learning Curve |
|---|---|---|---|---|
| Python install manager | Fast | Yes | High | Low |
| uv | Very fast (prebuilt) | Yes | High | Low |
| Homebrew | Fast | Limited | Medium | Low |
| apt / dnf | Fast | No | Low | Low |
| pyenv | Slow (compiles) | Yes | High | Medium |
| python.org installer | Fast | Limited | Medium | Low |
Create a Virtual Environment for Every Project
A virtual environment gives each project its own packages. Two projects can then use different versions of the same library without conflict.
With the Standard Library
# macOS / Linux
python3 -m venv .venv
source .venv/bin/activate
# Windows PowerShell
py -m venv .venv
.venv\Scripts\Activate.ps1
After activation, your prompt shows (.venv). Now python and pip point inside the project folder.
python -m pip install requests
python -c "import requests; print(requests.__version__)"
The second command prints the installed requests version. It confirms the package landed in the venv.
On Windows, PowerShell may block the activation script. Allow it for your user with Set-ExecutionPolicy -Scope CurrentUser RemoteSigned.
With uv
uv handles the interpreter, the venv, and the lockfile in one flow:
uv init my-app
cd my-app
uv python pin 3.15
uv add requests
uv run python main.py
uv init creates pyproject.toml. uv python pin writes a .python-version file. uv add installs the dependency into a .venv and records it. uv run executes your script inside that environment, with no activation step. If you list a version in .python-version and it is missing, uv fetches it automatically.
Handle the “externally-managed-environment” Error
Recent Debian, Ubuntu, Fedora, and Homebrew builds follow PEP 668. They block pip install into the system interpreter:
error: externally-managed-environment
Do not bypass it with --break-system-packages. Create a virtual environment instead. For command-line tools you want globally, use an isolated tool installer:
# uv
uv tool install ruff
# or pipx
pipx install ruff
Each tool gets its own private environment, and its executable lands on your PATH.
Common Mistakes: Bad Code vs. Good Code
Anti-Pattern: Global installs and system overrides
# BAD: installs into the OS-owned interpreter
sudo pip install flask
# BAD: forces past PEP 668 protection
pip install flask --break-system-packages
# BAD: repoints the system python to a new version
sudo ln -sf /usr/local/bin/python3.15 /usr/bin/python3
These commands can break apt, dnf, firewalld, and other OS tools that expect the system Python. A bad sudo pip install can also leave you with conflicting package versions you cannot cleanly remove.
Refactored: Isolated, reproducible setup
# GOOD: per-project environment with a pinned interpreter
uv init my-app && cd my-app
uv python pin 3.15
uv add flask
uv run flask --version
The system Python stays untouched. The project records its Python version and its dependencies. A teammate runs uv sync and gets the same environment.
Anti-Pattern: Ambiguous pip
# BAD: which interpreter does this pip belong to?
pip install pandas
Refactored: Explicit interpreter
# GOOD: pip always matches the interpreter you named
python -m pip install pandas
python -m pip binds the install to the exact interpreter you are running. This removes the classic “installed it, but import fails” problem.
Verify Your Installation
Run all four checks. They confirm the interpreter, the tooling, and the isolation.
python --version # interpreter version
python -m pip --version # pip and its interpreter path
python -c "import sys; print(sys.executable)" # which binary is running
python -c "import sys; print(sys.prefix != sys.base_prefix)" # True inside a venv
The last command prints True inside an active virtual environment and False outside one. If sys.executable points to a system path while you expect a project path, your venv is not active.
Upgrade or Remove Python Safely
| Task | Windows | macOS | Linux |
|---|---|---|---|
| Add a new version | py install 3.15 |
uv python install 3.15 |
uv python install 3.15 |
| List installed | py list |
uv python list --only-installed |
uv python list --only-installed |
| Remove a version | py uninstall 3.14 |
uv python uninstall 3.14 |
uv python uninstall 3.14 |
| Update | Automatic (manager) | brew upgrade python |
sudo apt upgrade python3 |
Removing the Python install manager does not remove your installed runtimes. Run py uninstall --purge for a full cleanup. Never remove the system Python on Linux or macOS.
Frequently Asked Questions
Which Python version should I install in 2026?
Install Python 3.15 for new work. It is the current stable release and receives bugfix updates until October 2031. Use 3.14 if a dependency has no 3.15 wheels yet. Avoid 3.10 and older, since 3.10 reached end-of-life on October 1, 2026.
How do I install Python on Windows 11?
Install the Python install manager with winget install 9NQ7512CXL7T or from the Microsoft Store. Then run py install 3.15. Verify with py --version. No administrator rights are required.
Should I use uv or the official installer?
Use uv if you manage several projects or need multiple Python versions. It installs prebuilt interpreters in seconds and handles virtual environments and lockfiles. Use the Python install manager on Windows, or Homebrew and your distro package, when you only need one general-purpose interpreter.
Why does pip say “externally-managed-environment”?
Your OS marks its Python as managed by the package manager, following PEP 668. Create a virtual environment with python3 -m venv .venv, or use uv tool install or pipx install for command-line tools. Do not use --break-system-packages.




