【发布时间】:2019-11-26 18:22:50
【问题描述】:
我浏览了类似措辞的问题,但没有找到答案:
在导入某些库时,似乎我必须在一个语句中导入顶级库,然后在第二个语句中导入我想要使用的模块或对象。我最近遇到的一个例子是:
import tkinter as tk
import tkinter.filedialog
这使我能够以两种不同的方式获取文件对话框:
files = filedialog.askopenfilenames()
或
files = tk.filedialog.askopenfilenames()
为什么不导入tkinter.filedialog就不能调用第二个选项?我不熟悉文件/包/模块/等的具体结构。我认为它与它有关。
【问题讨论】:
-
谁说你不能使用第二个选项?您尝试时遇到了什么错误?
-
@Prune 我收到“在 init.py 中找不到参考 'filedialog'”
-
@Prune,我现在明白这只是一个警告。尽管出现警告,代码仍编译并运行。
-
鉴于第一行,第二个导入行是不必要的。您可以直接使用
tk.filedialog.askopenfilenames()而无需第二行。 -
对于 Pycharm 中的我来说,如果没有第二次导入,我会收到一个停止错误:
AttributeError: module 'tkinter' has no attribute 'filedialog'。通过第二次导入,它运行得非常顺利。
标签: python import shared-libraries