Как правильно использовать idlestartup на Python 2.6.5? - PullRequest
1 голос
/ 09 апреля 2010

Idlestartup аналогичен переменной pythonstartup, но для IDLE вместо командной строки. Но, похоже, не работает должным образом. Я использую Python 2.6.5 на Windows.

Мне назначен следующий скрипт:

from pprint import pprint
import sys
newPath = 'C:\\Python26\test')
sys.path.append(newPath)
print "initial config loaded"

Обе переменные Idlestartup и pythonstartup назначены одному и тому же файлу (скрипт выше). При запуске IDLE pprint и sys НЕ доступны, окончательное сообщение НЕ печатается, но newPath был добавлен в sys.path. При запуске командной строки доступны pprint и sys, распечатывается последнее сообщение и добавляется newPath в sys.path.

Это ошибка? Я делаю что-то неправильно? Спасибо

1 Ответ

4 голосов
/ 09 апреля 2010

sys.stdout может не быть в своем конечном состоянии в момент загрузки idlestartup - так что вполне возможно, что print к нему пытается перейти к «исходному» стандартному выводу, а затем немедленно стандартный вывод перенаправляется в командное окно простоя, поэтому эффекты print никогда не видны. Другими словами, я думаю, что никаких ошибок - просто не очевидно, как idlestartup может гарантировать отправку важного сообщения пользователю, если должна быть гарантирована доставка этого сообщения (сообщение, такое как ваш пример, не имеет большого значения , но если бы у вас были важные, я бы рассмотрел Tk способов их доставки гарантированным способом).

Редактировать : что касается того, чтобы удостовериться, что определенные имена добавляются в основное пространство имен, последнее называется __main__ (как с простоями, так и без них), поэтому добавьте в свой код несколько операторов, таких как

sys.modules['__main__'].pprint = pprint

& c должен работать.

...