从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