blob: 32731175f18037c042ba31e1b4ad26aab9ce5a18 [file] [log] [blame]
from __future__ import annotations
import os
import sys
def which(thefile: str) -> str | None:
path = os.environ.get("PATH", os.defpath).split(os.pathsep)
for d in path:
fname = os.path.join(d, thefile)
fnames = [fname]
if sys.platform == "win32":
exts = os.environ.get("PATHEXT", "").split(os.pathsep)
fnames += [fname + ext for ext in exts]
for name in fnames:
if os.access(name, os.F_OK | os.X_OK) and not os.path.isdir(name):
return name
return None