development

How to Check Your Python Version

Knowing which Python interpreter and version you are running is foundational for reproducible development, dependency compatibility, and security. Projects often declare minimum...

Mara Ellison
How to Check Your Python Version

Why checking the Python version matters

Knowing which Python interpreter and version you are running is foundational for reproducible development, dependency compatibility, and security. Projects often declare minimum or exact version requirements, and tooling such as linters, type checkers, and virtual environments behave differently across versions. This guide explains enduring, cross platform methods to verify your Python version in shells, scripts, and automated workflows, with distinctions between the python and python3 commands and how to inspect executable paths and build metadata.

Preferred command line checks

Use these commands in your terminal or command prompt to obtain reliable version information. Each approach emphasizes clarity and portability so you can rely the results across common environments.

Standard version flag

The most widely supported way to check Python version is the --version flag. It outputs a concise line with the major, minor, and patch level, and works for both python and python3 where either executable is available.

  • python --version
  • python3 --version

Interactive version query

You can also query the version from within the Python REPL or from an executed one liner. The sys module exposes version and version_info for programmatic use, and platform provides a related version string on some platforms.

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

Inspecting the interpreter executable

When multiple Python installations coexist, it is helpful to confirm which binary is invoked and where it resides. Combining version output with executable resolution reduces ambiguity in scripts and tooling configuration.

Which and type lookups

On Unix like systems, use shell builtins to locate the interpreter that would run if you typed python or python3 in your current environment.

  • which python or which python3
  • type python or type python3

In environments where the executable is a symlink, chaining readlink calls can reveal the ultimate target path, which is valuable when debugging virtual environment linkage or custom installations.

  • readlink -f $(which python3)

Cross platform considerations: python vs python3

Command and executable naming varies by operating system and distribution conventions. Understanding these patterns helps you choose the right invocation and avoid ambiguous references.

Naming patterns at a glance

Platform or Context Typical Executable Name Notes
Unix-like, explicit Python 3 python3 Common on Linux and macOS when both 2 and 3 are installed
Unix-like, legacy or ambiguous python May point to Python 2 or 3 depending on distribution and configuration
Windows official installer python Installer can add Python to PATH and associate .py files
Windows via py launcher py py --list shows available versions; py -3 prefers latest Python 3

Programmatic checks inside Python code

When you need the version from within a script, library, or CI step, importing the standard library is the most stable approach. The examples below emphasize immutable attributes and avoid reliance on external processes.

Using the sys module

The sys module is always available in standard Python and exposes version components as named attributes, suitable for runtime checks or logging.

import sys
print(sys.version)
print(sys.version_info)

Using the platform module

The platform module provides complementary release and version helpers, which can be useful for broader environment introspection beyond just Python.

import platform
print(platform.python_version())
print(platform.python_version_tuple())

Distinguishing version types

sys.version returns a string with version, build number, compiler, and build date in a single line. sys.version_info returns a named tuple that is ideal for conditional checks, while platform.python_version() returns a clean dotted string suitable for display or comparison.

Managing multiple installations and virtual environments

In practice, developers often juggle multiple Python releases, per project virtual environments, and system packages. Consistent checks reduce confusion about which interpreter is active.

Virtual environment indicators

When a virtual environment is activated, the prompt usually changes to show the environment name, and the executable path points into the environment directory. You can still run python --version to confirm the interpreter linked to that environment.

Verifying paths and site packages

Use the sysconfig or site modules to inspect where Python is reading site packages and installing third party libraries. This helps confirm that the checked interpreter matches the expected environment.

import sysconfig
print(sysconfig.get_path('purelib'))

Troubleshooting common mismatches

Commands may appear to hang, return exit codes indicating errors, or show unexpected paths. Aligning your invocation with your intent avoids subtle configuration issues.

When python and python3 differ

On some systems, python still maps to Python 2, while python3 points to Python 3. Using the explicit python3 command removes ambiguity. On modern distributions and on Windows, python often defaults to Python 3, but it is best to verify.

Exit codes and silent failures

A return code of zero typically indicates success, while a nonzero code can signal invocation errors or missing modules when using scripted checks. Always validate command output when integrating version checks into automation.

Summary of methods and when to use them

For quick interactive checks, the version flag is fastest. For scripts and automation, prefer the standard library to avoid spawning subprocesses. In complex setups, combine executable resolution with version queries to ensure correctness.

Quick reference table

sys.version_info tuple True/False
Method When to use Returns
python --version Quick check in the current shell
python -c "import sys; print(sys.version_info)" Scriptable one liner for parsing
which python Finding the active executable path Filesystem path
sys.version_info >= (3, 8) Conditional logic inside Python code

After confirming your interpreter version, you may want to manage dependencies, linting, and testing across different Python releases using tools such as pip, virtual environments, and CI pipelines. Consistent version checks integrate cleanly into those workflows and support long term maintenance.

Related Reading

More pages in this topic cluster.

For i in range 4: A Practical Guide to Python’s Range-Based Loop

In Python, the expression for i in range(4): iterates four times, with i taking the values 0, 1, 2, and 3. This sequence starts at 0 by default and stops before the stop value,...

Read next
Mermaid Recipe: A Technical Guide to Diagram-as-Code Syntax and Usage

Mermaid is a diagramming and charting tool that uses text-based definitions to generate flowcharts, sequence diagrams, class diagrams, Gantt charts, and more directly in the bro...

Read next
How to View a Website's Code

To view a website's code is to inspect the technologies, rules, and structure that define its layout, behavior, and content in a web browser. Most modern browsers ship with deve...

Read next