Ok, it turns out my original solution was correct:
# setup.py
...
setup(
...
install_requires=["pbs" if os.name == 'nt' else "sh"]
...
)
The reason this recently broke was due to releasing in the new wheel format. My understanding is that this new format does not ship a setup.py
with your package and handles dependencies using some other means.
Until I understand how to ship a wheel with conditional dependencies, I just won't produce wheels for this project.