Founding Member: $499/mes de por vida
Micare
Trucos técnicos

Lanzador de Python multiplataforma (esquiva el señuelo de Windows)

Un lanzador (wrapper) ejecutable: en vez de que tu hook llame a "python3 mi-script.py" y truene en Windows, llama a este script con la ruta de tu .py y él encuentra el Python REAL en macOS, Linux o Windows, esquivando el alias-señuelo de la Microsoft Store. Prueba py/python/python3, valida que no sea el señuelo y termina en silencio si no hay Python instalado.

HookPremiumTrucos técnicoscross platform

🌱 Empieza aquí · Lanzador de Python multiplataforma

Esta semilla resuelve un dolor de cabeza clásico: tienes un hook o un script que corre Python y funciona en tu Mac, pero truena en Windows con un error que pide "instalar Python desde la Microsoft Store", aunque Python ya esté instalado. La culpa es de un señuelo de Windows (un falso python3 que la tienda pone en el camino). Este lanzador lo esquiva: encuentra el Python de verdad y corre tu script sin importar el sistema operativo.

Para instalarla

Abre esta carpeta con Claude Code o Cowork y dile a tu asistente:

"Siembra esta semilla 🌱"

Con eso basta de tu parte. Tu asistente hace todo lo técnico y al final te dice cómo comprobar que quedó funcionando. Vas a ver algunas palabras en inglés en la pantalla; ni caso, él te guía.

¿Otras formas de pedírselo? "instala esta semilla", "pon a funcionar el lanzador de Python", "haz el setup de esto". Te entiende igual.


Para el asistente que siembra 🤖

Este componente no es un hook de evento que se dispare solo. Es un ayudante (wrapper) que otros hooks llaman para invocar Python de forma segura en cualquier sistema. Por eso NO lleva su propia entrada en settings.json: se instala una vez y luego se referencia desde el comando de cualquier hook que corra Python. Sigue estos pasos y no inventes rutas: usa $HOME siempre.

1. Copia el lanzador (el corazón de la semilla)

Copia kernel/run-python.sh a la carpeta de hooks del usuario y dale permiso de ejecución.

Claude Code / Cowork (macOS o Linux):

mkdir -p "$HOME/.claude/hooks"
cp kernel/run-python.sh "$HOME/.claude/hooks/run-python.sh"
chmod +x "$HOME/.claude/hooks/run-python.sh"

Windows (Git Bash / WSL): misma ruta ~/.claude/hooks/. El script usa bash, que viene con Git Bash o WSL. Justo aquí es donde este lanzador brilla, porque es el entorno donde aparece el señuelo de la Microsoft Store. Si el usuario corre Claude Code nativo en Windows sin bash, avísale que este ayudante necesita un entorno con bash disponible.

2. Úsalo en los hooks que corran Python (el paso clave)

Este es el punto de toda la semilla. Cada vez que un hook (o cualquier comando) necesite correr un archivo de Python, envuelve la llamada con el lanzador en lugar de llamar a python3 directo.

  • Antes (frágil en Windows):
    python3 $HOME/.claude/hooks/mi-script.py
    
  • Después (a prueba de señuelo):
    bash $HOME/.claude/hooks/run-python.sh $HOME/.claude/hooks/mi-script.py
    

Si un hook en settings.json corre un .py, edita su campo command para que pase por el lanzador. Los argumentos que el script necesite van después de la ruta del .py; el lanzador se los entrega a Python tal cual.

3. Verificación post-siembra (obligatoria)

Comprueba las tres cosas: que el archivo quedó colocado y ejecutable, que sí corre un script de Python, y que falla en silencio cuando no hay script.

a) Corre un script de Python de prueba:

printf 'print("hola desde Python")\n' > /tmp/prueba-python.py
bash "$HOME/.claude/hooks/run-python.sh" /tmp/prueba-python.py; echo "EXIT=$?"

Salida esperada:

hola desde Python
EXIT=0

Si ves el saludo y EXIT=0, el lanzador encontró el Python real y corrió el script. (Si NO ves el saludo pero sí EXIT=0, revisa que el usuario tenga Python instalado; el lanzador es non-blocking a propósito y no truena, solo se calla.)

b) Falla en silencio cuando el script no existe (comportamiento non-blocking):

bash "$HOME/.claude/hooks/run-python.sh" /tmp/no-existe.py; echo "EXIT=$?"
rm -f /tmp/prueba-python.py

Salida esperada: sin ninguna línea de salida y EXIT=0. Así confirmas que un hook que dependa del lanzador nunca bloqueará el flujo por un archivo faltante.

c) El archivo quedó colocado y con permiso de ejecución:

ls -l "$HOME/.claude/hooks/run-python.sh"

Salida esperada: una línea que lista el archivo con x (ejecutable) en sus permisos, por ejemplo -rwxr-xr-x.

Cuando las tres pruebas den lo esperado, avísale al usuario que ya quedó y explícale en una línea qué gana con esto.


✅ ¿Cómo sé que funcionó?

A partir de ahora, cualquier hook o script que corra Python y pase por este lanzador va a funcionar igual en tu Mac, en Linux y en Windows, sin el error del señuelo de la Microsoft Store. Ya no vas a ver esa pantalla pidiéndote "instalar Python desde la tienda" cuando tu automatización arranca.

No tienes que hacer nada especial en el día a día: instalas el lanzador una vez y lo pones en medio de tus hooks de Python. Ellos se vuelven multiplataforma sin que te enteres. Eso es todo. 🌱

¿Quieres implementarla con acompañamiento?

Agenda una asesoría directa con JP y aterrízala en tu caso · desde $600 MXN.

Agendar una asesoría