Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

Run the same executable your project uses. The quickest check is python --version (or python -V). On systems where the command is named python3, use python3 --version. Windows installations with several runtimes can also use py -V and py list. Python documents -V/--version as printing the version number and exiting, while -VV prints additional build information.

The command reports only the interpreter selected by that command. A virtual environment, launcher configuration, or multiple installations can therefore produce a different result from another terminal command.

The commands to use on each operating system

System or situation Command What it tells you
Windows default runtime python --version or python -V Version of the interpreter selected by python
Windows runtime launcher py -V Version selected by the Windows py launcher
Windows installed-runtime inventory py list Runtimes listed by the current Python Install Manager
Linux python3 --version or python3 -V Version of the executable named python3
macOS python3 --version or python3 -V Version of the executable named python3
More build detail python -VV (or the equivalent executable) Extended version and build information

Use the exact command that starts your application. If a project is launched with python3, checking python may describe a different installation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Reference: Python command-line and environment documentation.

Check Python on Windows

1. Open a terminal

Start Command Prompt, PowerShell, or another Windows terminal.

2. Check the default command

Run:

python --version

You can use the shorter equivalent:

python -V

A successful response looks like a version number such as Python 3.x.y. The exact version depends on what is installed and selected on that computer.

3. Check the Windows launcher when you use it

If your workflow uses the Windows launcher, run:

py -V

Current Windows guidance describes python as the normal command for launching the default runtime and py as useful when selecting or managing multiple runtimes. Read the current Using Python on Windows documentation for the behavior of the Install Manager and launcher on your installation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

4. List installed runtimes

To see the runtimes recognized by the current Python Install Manager, run:

py list

This is an inventory view; it is not the same as asking one executable for its version. The list can contain runtimes that are not the one your current project selects.

Do not rely on old launcher examples without checking your installation

The current Windows documentation says the legacy Python launcher documentation is deprecated since Python 3.14 and has been superseded by the Python Install Manager documentation. Older guides may show py --list; do not assume that example is current for the launcher you have installed. Prefer the commands documented for your current Install Manager.

Check Python on Linux

Use the executable your distribution exposes

Open a terminal and run:

python3 --version

or:

python3 -V

Some environments also provide a python command. If your project starts with that command, check it directly:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
python --version

The -V and --version options are interpreter options, so the result always belongs to the executable name you typed.

Check Python on macOS

Use the project’s command

In Terminal, the commonly used executable is python3:

python3 --version

The short form is:

python3 -V

If a project, virtual environment, or tool invokes another command, run the version check against that same command. Checking a different executable can report a different interpreter.

Why the version can change between terminals

A command identifies one selected interpreter

python --version does not enumerate every Python installation. It reports the interpreter selected by python in that shell. The same is true of python3 and py.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Virtual environments take precedence for a project

An active virtual environment can change which interpreter is selected. For a reliable diagnosis, activate the environment used by the project and run the same command used to start the program. On Windows, compare that result with the runtimes shown by py list when you need an inventory.

Compare four things when debugging

  1. The exact executable or launcher command you invoked.
  2. Whether a virtual environment is active.
  3. The version printed by that command.
  4. Whether the project is started with that same command and environment.

This comparison explains most “Python is the wrong version” reports without changing any files.

Check the interpreter from inside a script

When the question is “which Python is running this program?”, execute the program with the interpreter in question and print its runtime information:

python -c "import sys; print(sys.version)"

Replace python with python3 or another launcher when that is how the program is started. The value from sys.version is useful when you need the interpreter’s detailed runtime string rather than only the short version displayed by -V.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

For a concise command-line answer, use -V. For additional build details, use -VV:

python -VV

The option is available through the Python command-line interface documented by the Python Software Foundation.

Troubleshooting common results

“python” or “python3” is not recognized

The shell cannot find an executable with that name in the current configuration. Try the executable name appropriate to your platform: python3 on many Linux and macOS systems, or python and py on Windows. If none works, consult the installation and command configuration for that machine; a version command cannot report an interpreter the shell cannot select.

python and python3 show different versions

They are separate command names and may select different installations. Use the one your project actually invokes, then check whether a virtual environment is active. Do not combine the results as though they describe one interpreter.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

py -V does not match python --version on Windows

The commands can select different runtimes. Treat py -V as the launcher’s result and python --version as the result for the python command. Use py list for the current Install Manager’s runtime inventory, then run the project with the command it is configured to use.

The terminal version differs from the application’s version

Run the application’s own command with the inline check:

python -c "import sys; print(sys.version)"

Use the same launcher and activated environment as the application. This avoids diagnosing one interpreter while the application runs another.

An older tutorial recommends py --list

Windows documentation for the legacy launcher is deprecated since Python 3.14. Use the current Python Install Manager guidance and its py list command where that manager is installed.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

A repeatable version-check procedure

  1. Open the same shell used to run the project.
  2. Activate the project’s virtual environment, if it has one.
  3. Run the project’s exact command with --version or -V.
  4. If you need build details, repeat with -VV.
  5. For Windows multi-runtime diagnosis, run py list.
  6. If the result still seems wrong, run the inline sys.version check through that same command.

Or skip the browser setup

If you also need clean screenshots of documentation pages, demos, or release notes, ScreenshotNeo can return an image or PDF through one request instead of configuring a browser. Its consent step accepts cookie banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each step can be disabled. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and the response identifies the page verdict and billing status in X-Page-Verdict and X-Billed headers. It also provides an MCP server for Claude, Cursor, and other MCP clients with take_screenshot, get_page_info, and capture_pdf tools.

See the ScreenshotNeo API documentation for all parameters. A direct cURL request is:

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

The same request in Python is:

import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)

And in Node.js:

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

ScreenshotNeo includes full-page and element capture, device presets, retina scaling, PDF controls, custom CSS and JavaScript, waits, request blocking, headers, cookies, user-agent, authorization, timezone, geolocation, transparent backgrounds, resizing, configurable caching, signed links, asynchronous jobs, webhooks, bulk capture for up to 100 URLs per call, a usage API, and an OpenAPI specification. Its parameter names are compatible with those used by other screenshot APIs.

Plan Allowance Price
Free 1,000 screenshots/month $0, no card
Starter 3,000 screenshots $5
Growth 15,000 screenshots $15
Pro 60,000 screenshots $39
Scale 250,000 screenshots $99
Business 1,000,000 screenshots $249

Every feature is included on every plan, and yearly billing provides two months free. If that capture workflow is useful, sign up for ScreenshotNeo to get 1,000 screenshots a month free with no card; paid plans start at $5 for 3,000 screenshots.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.