【问题标题】:In python, why do you have (seemingly) to import some libraries twice?在 python 中,为什么你有(似乎)两次导入一些库?
【发布时间】: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


【解决方案1】:

【讨论】:

  • 问题似乎是:为什么files = tk.filedialog.askopenfilenames()只给import tkinter as tk会报错
  • @JohanC 看起来错误只是一个警告,但我仍然很好奇为什么我会从我的 IDE 得到任何回话......所以是的,我想这个问题仍然存在。
猜你喜欢
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 2014-01-08
  • 1970-01-01
  • 2022-11-30
  • 2013-05-13
  • 2014-11-02
  • 1970-01-01
相关资源
最近更新 更多