Skip to main content

python-shell-fallback

Fallback to shell execution when sandbox fails for library-dependent Python code

Quellinformationen

Repository
HKUDS/OpenSpace
Letzte Quellaktivität
17. Juli 2026 um 03:43
Erkannte Sprache von SKILL.md
Englisch
Sterne
7.773
Forks
923

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
2 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
python-shell-fallback
description
Fallback to shell execution when sandbox fails for library-dependent Python code
# Python Shell Fallback When `execute_code_sandbox` fails for Python code that depends on external libraries, use `run_shell` with a heredoc Python script as a reliable fallback. The shell environment typically has better access to installed packages and system configuration than the sandbox. ## When to Use This Pattern Apply this skill when: - `execute_code_sandbox` returns errors related to missing libraries (e.g., `ModuleNotFoundError`) - The code requires packages that may not be installed in the sandbox environment - You need PDF generation, data visualization, or other library-heavy operations - Previous sandbox execution attempts have failed with import errors ## How to Implement ### Step 1: Identify the Failure Check if the sandbox error indicates a library/dependency issue: - `ModuleNotFoundError: No module named 'xxx'` - `ImportError: cannot import name 'xxx'` - Similar package-related errors ### Step 2: Convert to Shell Execution Rewrite the code execution using `run_shell` with a heredoc: ```bash python3 << 'EOF' # Your Python code here import library_name # ... rest of code EOF ``` ### Step 3: Execute via run_shell Call `run_shell` with the heredoc Python script: ``` command: python3 << 'EOF' import reportlab from reportlab.lib.pagesizes import letter from reportlab.pdfgen import canvas # Your library-dependent code here c = canvas.Canvas("output.pdf", pagesize=letter) c.drawString(100, 750, "Hello World") c.save() EOF ``` ## Example: PDF Generation Fallback **Sandbox attempt (fails):** ```python # execute_code_sandbox call fails with: # ModuleNotFoundError: No module named 'reportlab' ``` **Shell fallback (works):** ```bash python3 << 'EOF' from reportlab.lib.pagesizes import letter from reportlab.pdfgen import canvas c = canvas.Canvas("legal_memo.pdf", pagesize=letter) c.setTitle("Legal Memorandum") c.drawString(100, 750, "CONFIDENTIAL LEGAL MEMORANDUM") c.save() print("PDF created successfully") EOF ``` ## Best Practices 1. **Use quoted heredoc (`<< 'EOF'`)** - Prevents variable expansion, keeping Python code intact 2. **Verify output** - Check stdout/stderr from `run_shell` to confirm success 3. **Handle file paths** - Ensure output files are written to accessible directories 4. **Test incrementally** - For complex scripts, test in smaller chunks first 5. **Include error handling** - Add try/except blocks to capture issues gracefully ## Alternative: Inline Python Command For simple one-liners or short scripts: ```bash python3 -c "import reportlab; print(reportlab.__version__)" ``` ## Troubleshooting If shell execution also fails: - Check if Python3 is available: `which python3` - Verify package installation: `pip3 list | grep package_name` - Try `python` instead of `python3` (some systems differ) - Consider installing the package: `pip3 install package_name`
Auf GitHub ansehen