¿Existe una manera simple de ejecutar un script de Python en Windows/Linux/OS X?Uso del subproceso para ejecutar el script de Python en Windows
En los dos, subprocess.Popen("/the/script.py")
último funciona, pero en Windows Me sale el siguiente error:
Traceback (most recent call last):
File "test_functional.py", line 91, in test_functional
log = tvnamerifiy(tmp)
File "test_functional.py", line 49, in tvnamerifiy
stdout = PIPE
File "C:\Python26\lib\subprocess.py", line 595, in __init__
errread, errwrite)
File "C:\Python26\lib\subprocess.py", line 804, in _execute_child
startupinfo)
WindowsError: [Error 193] %1 is not a valid Win32 application
monkut's comment: The use case isn't clear. Why use subprocess to run a python script? Is there something preventing you from importing the script and calling the necessary function?
estaba escribiendo un guión rápida para probar la funcionalidad general de un pitón mando herramienta de línea (para probarlo en varias plataformas). Básicamente, tenía que crear un grupo de archivos en una carpeta temporal, ejecutar la secuencia de comandos y verificar que los archivos se hayan cambiado de nombre correctamente.
que podría haber importado el guión y se llama a la función, pero ya que se basa en sys.argv
y utiliza sys.exit()
, habría necesitado para hacer algo así ..
import sys
import tvnamer
sys.argv.append("-b", "/the/folder")
try:
tvnamer.main()
except BaseException, errormsg:
print type(errormsg)
Además, quería capturar la salida estándar y stderr para la depuración en caso de que algo salga mal.
Por supuesto, una mejor manera sería escribir el guión de forma más comprobable por unidad, pero el guión está básicamente "hecho" y estoy haciendo un último lote de pruebas antes de hacer un lanzamiento de "1.0" (después de lo cual Voy a hacer una reescritura/reestructuración, que será mucho más ordenada y más comprobable)
Básicamente, era mucho más fácil simplemente ejecutar el script como un proceso, después de encontrar la variable sys.executable
. Lo habría escrito como un script de shell, pero eso no habría sido multiplataforma. El guión final se puede encontrar here
El caso de uso no está claro. ¿Por qué usar un subproceso para ejecutar un script python? ¿Hay algo que le impida importar la secuencia de comandos y llamar a la función necesaria? – monkut
Tenía el mismo problema al ejecutar los módulos de nodejs de python. subprocess.call ([r '.. \ nodejs \ npm'], shell = True) resolvió el problema. – Stefan