Find executable path in Python
The full path to executables on the system Path (and cwd on Windows) are discovered by Python shutil.which. On Windows, environment variable PATHEXT is used to search filename suffixes if not specified at the input to shutil.which().
Shell aliases
are not found by shutil.which() since the shell is not invoked.
Instead append the directory of the desired executable to environment variable PATH, or specify it in shutil.which(..., path="/path/to/exe")
.
import shutil
# None if executable not found
exe = shutil.which('ls')
Since shutil.which()
returns None
for non-found executable it is convenient for
pytest.mark.skipif
For programs not on PATH where the executable path is known:
shutil.which('myexe', path="/path/to/myexe")