executor
Programmer friendly subprocess wrapper
What it is and what it does
Executor is a subprocess wrapper that provides an object-oriented interface for running commands on UNIX systems. It handles argument escaping, error checking, and status code validation automatically, raising an exception if a command fails unless explicitly told otherwise. Beyond local execution, it supports running commands remotely over SSH and executing groups of commands concurrently in a command pool with configurable concurrency levels.
The package offers both a Python API and a command-line tool. The CLI supports timeouts, dynamic startup delays (useful for periodic tasks), and interprocess locking to prevent concurrent execution. It is designed to reduce boilerplate around subprocess management and make error handling the default behavior rather than an afterthought.
Use it for:
- Running shell commands from Python scripts with automatic error checking and proper argument escaping.
- Executing administrative tasks on remote servers via SSH using the same object-oriented interface as local commands.
- Running a batch of tasks concurrently across multiple hosts with controlled concurrency levels.
- Implementing periodic jobs with dynamic startup delays to avoid thundering herd problems.
- Building command-line tools that need to invoke external programs with timeout and locking support.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Wraps Python's subprocess module to simplify executing local commands, remote commands over SSH, and concurrent command pools with proper argument escaping and error handling.
No. The package is abandoned (last release 2020-11-19) with no active maintenance or security updates. While it has low install friction and no known vulnerabilities, its age and lack of maintenance make it risky for new projects. For modern subprocess management, consider actively maintained alternatives or Python's built-in subprocess module with additional libraries for specific features you need.
Install
executor on PyPI
pip
pip install executoruv
uv add executorpoetry
poetry add executorInstalling executor
Before you install
Low install friction with five straightforward dependencies. However, the package is abandoned—last release was 2020-11-19, over 2094 days ago. No active maintenance or security updates are expected.
License in practice
MIT license is permissive, allowing commercial and private use with minimal restrictions. No licensing concerns for adoption.
Quickstart
from executor import execute
# Simple command execution
execute('echo hello')
# Capture output
output = execute('hostname', capture=True)
# Check for failure without raising
success = execute('some_command', check=False)
Requires UNIX-like system (POSIX); not designed for Windows. Package is abandoned and may not work reliably with modern Python versions beyond 3.8.
Verify before relying
- Whether the package works reliably with Python 3.9+ given its abandoned status.
- Current compatibility with modern SSH clients and remote execution scenarios.
- Whether dependencies (coloredlogs, fasteners, humanfriendly, property-manager, six) have unresolved security issues or breaking changes since last release.
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 5 — coloredlogs, fasteners, humanfriendly, property-manager, six |
| Maintenance | abandoned — 2,094 days since the last release |
| First released | |
| Downloads | 380,032/month — #7,106 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: executor-23.2-py2.py3-none-any.whl
Tags
More Software Development packages
Provides backported and experimental type hints…
permissive · top 100 on PyPI
numpyNumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
distlibDistlib provides low-level packaging utilities…
permissive · top 1,000 on PyPI
subprocrunnerWraps Python's subprocess module to simplify…
permissive · top 15,000 on PyPI
PaverPaver is a Python-based task automation and…
permissive · top 15,000 on PyPI
EasyProcessEasyProcess wraps Python's subprocess module to…
permissive · top 5,000 on PyPI
invokeInvoke is a Python library for defining and…
permissive · top 1,000 on PyPI
runsRuns multiple subprocess commands from a text…
permissive · top 5,000 on PyPI
shCalls any Unix program as a Python function,…
permissive · top 5,000 on PyPI
bashkitBashkit is a sandboxed bash interpreter for…
permissive · top 15,000 on PyPI
multitaskingConverts Python methods into non-blocking,…
permissive · top 1,000 on PyPI
subprocess.runProvides a simplified interface to run shell…
permissive · top 15,000 on PyPI
subprocess-teeA drop-in replacement for subprocess.run that…
permissive · top 5,000 on PyPI