logować błędy składniowe i nie przechwycone wyjątki dla podprocesu Pythona i drukować je na terminalu

Problem

Próbowałem napisać program, który rejestruje niezłapane wyjątki i błędy składniowe dla podprocesu. Łatwo, prawda? Tylko fajkastderr we właściwym miejscu.

jednak, podproces to kolejny program Pythona - zadzwonię do niegotest.py- musi działać tak, jakby jego dane wyjściowe / błędy nie były przechwytywane. Oznacza to, że uruchomienie programu rejestrującego musi wyglądać tak, jakby użytkownik właśnie uruchomiłpython test.py jak normalnie.

Dalszy komplikuje problemproblem żeraw_input faktycznie zostaje wysłany dostderr Jeślireadline nie jest używany. Niestety nie mogę tak po prostuimport readline, ponieważ nie mam kontroli nad plikami, które są uruchamiane za pomocą mojego rejestratora błędów.

Uwagi:

Jestem dość ograniczony na komputerach, na których będzie działał ten kod. Nie mogę zainstalowaćpexpect lub edytuj*customize.py pliki (ponieważ program będzie uruchamiany przez wielu różnych użytkowników). Naprawdę czuję, że i tak powinno być rozwiązanie stdlib ...Musi to działać tylko na macach.Motywacją jest to, że jestem częścią zespołu badającego błędy, które napotykają nowi programiści.Co próbowałem

Próbowałem następujących metod bez powodzenia:

po prostu używamtee jak w pytaniuJak napisać stderr do pliku, używając „tee” z potokiem? (nie udało się wyprodukowaćraw_input monity); implementacje Pythonatee które znalazłem w kilku pytaniach SO miało podobne problemynadpisywaniesys.excepthook (nie udało się go uruchomić dla podprocesu)to pytanie najlepsza odpowiedź wydawała się obiecująca, ale nie udało się jej wyświetlićraw_input monituje poprawnie.moduł logowania wydaje się przydatny do zapisywania do pliku dziennika, ale wydaje się, że nie trafia w sedno problemuniestandardowe czytniki stderrniekończące się googling

questionAnswers(2)

yourAnswerToTheQuestion