系统相关
首页 > 系统相关> > 从IDLE和Shell中的包导入

从IDLE和Shell中的包导入

作者:互联网

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

import tkinter as tk
tk.filedialog.askopenfilename()

在shell中,我收到此错误:

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

我知道我必须导入tkinter.filedialog以使其在shell中工作.

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

我使用的是Python 3.4.

解决方法:

这是我为将来的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”替换为“ttk”.

标签:python-idle,python,python-import,python-packaging
来源: https://codeday.me/bug/20190929/1833087.html