registre los errores de sintaxis y las excepciones no detectadas para un subproceso python e imprímalas en el terminal

El problema

He estado intentando escribir un programa que registra las excepciones no detectadas y los errores de sintaxis de un subproceso. Fácil, ¿verdad? Solo pipastderr al lugar correcto.

sin embargo, el subproceso es otro programa de python, lo llamarétest.py- Eso debe ejecutarse como si sus resultados / errores no estuvieran siendo capturados. Es decir, ejecutar el programa logger debe parecer que el usuario acaba de ejecutarpython test.py como normal.

Para complicar aún más el problema esel problema eseraw_input en realidad se envía astderr Sireadline no se utiliza Desafortunadamente, no puedoimport readline, ya que no tengo control sobre los archivos que se ejecutan utilizando mi registrador de errores.

Notas:

Estoy bastante restringido en las máquinas en las que este código se ejecutará. No puedo instalarpexpect o editar el*customize.py Archivos (ya que el programa será ejecutado por muchos usuarios diferentes). Realmente siento que debería haber una solución estándar de todas formas ...Esto solo tiene que funcionar en macs.La motivación para esto es que soy parte de un equipo que investiga los errores que los nuevos programadores cometen.Lo que he intentado

He intentado los siguientes métodos, sin éxito:

solo usandotee como en la pregunta¿Cómo escribo stderr en un archivo mientras uso "tee" con una tubería? (no pudo producirraw_input indicaciones); implementaciones de pythontee que encontré en varias preguntas de SO tenía problemas similaressobrescribiendosys.excepthook (no lo hizo funcionar para un subproceso)esta pregunta es La mejor respuesta parecía prometedora, pero no se pudo mostrar.raw_input avisa correctamentelamódulo de registro parece útil para escribir realmente en un archivo de registro, pero no parece llegar al punto crucial del problemalectores stderr personalizadosgooglear sin fin

Respuestas a la pregunta(2)

Su respuesta a la pregunta