You could have assumed Python 2.7 for 10 years or so.
Now you could safely assume Python 3 (find minimum version applicable for your case).
> installing dependencies is not fun,
Pure python dependencies are easy (e.g., pipenv). C extensions are not more difficult than corresponding dependencies for your bash script (likely via system packages).
> shelling out when needed is not pleasant, and the size of program always seemingly doubles.
Have you tried to use shell command for shell one-liners in Python? e.g., directly via `proc = subprocess.run(shell_pipeline, shell=True)` or dedicated libraries such as pyinvoke/fabric?