{"library":"prefect-shell","title":"Prefect Shell","description":"Prefect Shell provides integrations for executing shell commands within Prefect flows. It allows users to embed shell scripts and commands directly into their data pipelines, leveraging Prefect's orchestration capabilities like logging, retries, and observability. This library is part of the Prefect ecosystem, currently at version 0.3.5, and is actively maintained with regular updates as part of the broader Prefect project.","language":"python","status":"active","last_verified":"Fri May 15","install":{"commands":["pip install \"prefect[shell]\"","pip install prefect-shell"],"cli":null},"imports":["from prefect_shell import ShellOperation","from prefect import flow"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"from prefect import flow\nfrom prefect_shell import ShellOperation\n\n@flow\ndef run_simple_command():\n    # For short-running operations, use the .run() method\n    result = ShellOperation(commands=[\"echo Hello from Prefect Shell!\"]).run()\n    print(f\"Command output: {result.stdout.strip()}\")\n\n    # For longer-running operations or capturing structured output, use a context manager\n    with ShellOperation(\n        commands=[\"ls -l /tmp\"],\n        working_dir=\"/tmp\"\n    ) as list_files_operation:\n        process = list_files_operation.trigger()\n        process.wait_for_completion()\n        output_lines = process.fetch_result()\n        print(\"\\nFiles in /tmp:\")\n        for line in output_lines:\n            print(line.strip())\n\nif __name__ == \"__main__\":\n    run_simple_command()","lang":"python","description":"This quickstart demonstrates how to define a Prefect flow that executes shell commands using `ShellOperation`. It shows both the `.run()` method for simple, short commands and the context manager pattern (`with ShellOperation(...) as op: ...`) for long-running operations or when explicit output capture is required.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-15","installed_version":"0.3.1","pypi_latest":"0.3.5","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":20.9,"avg_import_s":5.19,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"shell","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":5.89,"mem_mb":49.6,"disk_size":"247.1M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"prefect-shell","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":5.65,"mem_mb":49.6,"disk_size":"247.1M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"shell","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":22.5,"import_time_s":4.83,"mem_mb":49.6,"disk_size":"248M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"prefect-shell","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":23.3,"import_time_s":4.93,"mem_mb":49.6,"disk_size":"248M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"shell","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":6.17,"mem_mb":53.2,"disk_size":"268.7M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"prefect-shell","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":6.21,"mem_mb":53.2,"disk_size":"268.7M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"shell","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":22.1,"import_time_s":5.76,"mem_mb":53.2,"disk_size":"269M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"prefect-shell","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":21.7,"import_time_s":5.72,"mem_mb":53.2,"disk_size":"269M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"shell","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":5.24,"mem_mb":51.9,"disk_size":"258.0M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"prefect-shell","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":5.37,"mem_mb":51.9,"disk_size":"258.0M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"shell","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":17.7,"import_time_s":5.64,"mem_mb":51.9,"disk_size":"259M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"prefect-shell","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":17.6,"import_time_s":5.59,"mem_mb":51.9,"disk_size":"259M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"shell","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":5.1,"mem_mb":53.2,"disk_size":"255.4M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"prefect-shell","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":5.1,"mem_mb":53.2,"disk_size":"255.4M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"shell","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":17.5,"import_time_s":5.3,"mem_mb":53.2,"disk_size":"257M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"prefect-shell","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":17.9,"import_time_s":5.26,"mem_mb":53.2,"disk_size":"257M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"shell","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":4.2,"mem_mb":49.1,"disk_size":"179.1M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"prefect-shell","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":4.28,"mem_mb":49.1,"disk_size":"179.1M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"shell","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":24.1,"import_time_s":3.78,"mem_mb":49,"disk_size":"180M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"prefect-shell","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":24.3,"import_time_s":3.77,"mem_mb":49.1,"disk_size":"180M"}]}}