【问题标题】:What's the right way to use idlestartup on python 2.6.5?在 python 2.6.5 上使用 idlestartup 的正确方法是什么?
【发布时间】:2010-04-09 14:04:06
【问题描述】:

Idlestartup 类似于 pythonstartup 变量,但用于 IDLE,而不是命令行。 但它似乎无法正常工作。我在 Windows 上使用 python 2.6.5。

我分配了以下脚本:

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。

这是一个错误吗?难道我做错了什么? 谢谢

【问题讨论】:

    标签: python startup


    【解决方案1】:

    sys.stdoutidlestartup 被加载时可能尚未处于其最终状态 - 所以它的print 很可能会尝试转到“原始”标准输出,然后立即标准输出被重定向到空闲的命令窗口,因此print 的效果永远不会被看到。换句话说,我认为没有错误 - 如果必须保证该消息的传递(如您的示例这样的消息没什么大不了的),如何保证 idlestartup 向用户发送重要消息并不明显,但如果您确实有重要的,我会研究Tk 以有保证的方式交付它们的方式)。

    编辑:至于确保将某些名称添加到主命名空间,后者命名为__main__(有空闲和没有空闲),因此在您的代码中添加一些语句,例如

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

    &c 应该可以工作。

    【讨论】:

    • 感谢您的解释。我不关心该消息,但我希望 pprint 和 sys(以及我稍后可能包含的其他模块)始终可用。关于如何解决这个问题的任何想法?我也尝试过 customize.py,但它的工作方式相同。
    • 我在文件末尾添加了您建议的行,但它不起作用。还有其他想法吗?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    • 2021-09-23
    相关资源
    最近更新 更多