registrar erros de sintaxe e exceções não identificadas para um subprocesso python e imprimi-los no terminal

O problema

Eu tenho tentado escrever um programa que registra exceções não identificadas e erros de sintaxe para um subprocesso. Fácil, certo? Apenas canostderr para o lugar certo.

Contudo, o subprocesso é outro programa python - vou chamá-lotest.py- que precisa ser executado como se suas saídas / erros não estivessem sendo capturados. Ou seja, executar o programa do criador de logs precisa parecer que o usuário acabou de executarpython test.py como normal.

Complicando ainda mais o problema éo problema naquelaraw_input na verdade é enviado parastderr E sereadline não é usado. Infelizmente, não posso simplesmenteimport readline, desde que eu não tenho controle sobre os arquivos que estão sendo executados usando meu logger de erro.

Notas:

Estou bastante restrito nas máquinas em que esse código será executado. Não consigo instalarpexpect ou edite o*customize.py arquivos (desde que o programa será executado por muitos usuários diferentes). Eu realmente sinto que deveria haver uma solução stdlib de qualquer maneira ...Isso só tem que funcionar em macs.A motivação para isso é que faço parte de uma equipe que está pesquisando os erros que os novos programadores cometem.O que eu tentei

Eu tentei os seguintes métodos, sem sucesso:

apenas usandotee como na perguntaComo faço para escrever stderr para um arquivo enquanto estiver usando "tee" com um pipe? (não conseguiu produzirraw_input prompts); implementações python detee que eu encontrei em várias perguntas do SO tiveram problemas semelhantessobrescrevendosys.excepthook (não conseguiu fazer funcionar para um subprocesso)esta questão é resposta top parecia promissor, mas não conseguiu exibirraw_input solicita corretamente.amódulo de registro Parece útil para realmente gravar em um arquivo de log, mas não parece chegar ao cerne da questãoleitores stderr personalizadosgoogling sem fim

questionAnswers(2)

yourAnswerToTheQuestion