Skip to main content

Python subprocess replacement

Project description


If you are migrating from 1.* to 2.*, please see

Version Downloads Status Python Versions Build Status Coverage Status

sh is a full-fledged subprocess replacement for Python 3.8 - 3.10, PyPy and PyPy3 that allows you to call any program as if it were a function:

from sh import ifconfig

sh is not a collection of system commands implemented in Python.

sh relies on various Unix system calls and only works on Unix-like operating systems - Linux, macOS, BSDs etc. Specifically, Windows is not supported.

Complete documentation here


$> pip install sh



Updating the docs

Check out the gh-pages branch and follow the README.rst there.


Tests are run in a docker container against all supported Python versions. To run, make the following target:

$> make test

To run a single test:

$> make test='FunctionalTests.test_background' test_one


First run all of the tests:

$> SH_TESTS_RUNNING=1 coverage run --source=sh -m unittest

This will aggregate a .coverage. You may then visualize the report with:

$> coverage report

Or generate visual html files with:

$> coverage html

Which will create ./htmlcov/index.html that you may open in a web browser.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sh-2.0.2.tar.gz (345.4 kB view hashes)

Uploaded source

Built Distribution

sh-2.0.2-py3-none-any.whl (38.3 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page