sys.stdout
может не быть в своем конечном состоянии в момент загрузки idlestartup
- так что вполне возможно, что print
к нему пытается перейти к «исходному» стандартному выводу, а затем немедленно стандартный вывод перенаправляется в командное окно простоя, поэтому эффекты print
никогда не видны. Другими словами, я думаю, что никаких ошибок - просто не очевидно, как idlestartup
может гарантировать отправку важного сообщения пользователю, если должна быть гарантирована доставка этого сообщения (сообщение, такое как ваш пример, не имеет большого значения , но если бы у вас были важные, я бы рассмотрел Tk
способов их доставки гарантированным способом).
Редактировать : что касается того, чтобы удостовериться, что определенные имена добавляются в основное пространство имен, последнее называется __main__
(как с простоями, так и без них), поэтому добавьте в свой код несколько операторов, таких как
sys.modules['__main__'].pprint = pprint
& c должен работать.