Ejecutando scripts de python con subprocess.call usando shebang

Estoy escribiendo una aplicación modular (en cierto modo) en Python 3 y me gustaría ejecutar progtwigs arbitrarios desde ella, dicho progtwig se especificó en tiempo de ejecución y no necesariamente un script de python.

Así lo uso, por ejemplo,

subprocess.call([spam, "-i", eggs, "-o", ham]) 

Si el spam es un script de python, con shebang to python3 y derechos de ejecución, obtengo

 OSError: [Errno 8] Exec format error 

si yo

 subprocess.call(["python3", spam, "-i", eggs, "-o", ham]) 

funciona bien.

¿Sabes por qué? ¿Cómo puedo ejecutar spam sin especificar python3 ?

Necesita usar shell=True , y necesita que su matriz se convierta en una cadena de comando, como esta:

 subprocess.call(' '.join([spam, "-i", eggs, "-o", ham]), shell=True) 

Esto invocará el shell en lugar del comando directo, y el shell debería poder manejar el shebang.

Tratar

 subprocess.call(['spam.py', "-i", eggs, "-o", ham])