从IDLE与Shell中的包导入

时间:2016-08-06 16:57:23

标签: python python-import python-idle python-packaging

导入整个包在IDLE中工作,但不在shell中。以下在IDLE中工作正常:

import tkinter as tk
tk.filedialog.askopenfilename()

在shell中,我收到此错误:

AttributeError: 'module' object has no attribute 'filedialog'

我知道我必须import tkinter.filedialog才能在shell中完成这项工作。

为什么IDLE和shell之间存在差异?我如何让IDLE像shell一样?让脚本在IDLE中工作并在shell中失败可能会令人沮丧。

我正在使用Python 3.4。

1 个答案:

答案 0 :(得分:1)

这是我为将来的3.5.3和3.6.0a4版本修复的IDLE错误。 Tracker issue.

对于现有的3.5或3.4版本,请在LOCALHOST行之前将以下内容添加到idlelib / run.py.

for mod in ('simpledialog', 'messagebox', 'font',
            'dialog', 'filedialog', 'commondialog',
            'colorchooser'):
    delattr(tkinter, mod)
    del sys.modules['tkinter.' + mod]

我认为这适用于早期的3.x版本,但没有安装它们进行测试。对于现有的3.6.0a_版本,请更换“colorchooser”'与&#t; ttk'。