Detect WSL from Python in Windows
It’s also straightforward to detect if
- running inside WSL
- WSL is available
These functions use only Python standard library modules.
Detect if inside WSL
This function detects if Python is running in WSL.
from platform import uname
def in_wsl() -> bool:
return 'microsoft-standard' in uname().release
Detect WSL from Windows (outside WSL)
import os
import shutil
def wsl_available() -> bool:
"""
heuristic to detect if Windows Subsystem for Linux is available.
Uses presence of /etc/os-release in the WSL image to say Linux is there.
This is a de facto file standard across Linux distros.
"""
if os.name == "nt":
wsl = shutil.which("wsl")
if not wsl:
return False
# can't read this file or test with
# pathlib.Path('//wsl$/Ubuntu/etc/os-release').
# A Python limitation?
ret = subprocess.run(["wsl", "test", "-f", "/etc/os-release"])
return ret.returncode == 0
return False