导入模块但仍需使用全名
Posted
技术标签:
【中文标题】导入模块但仍需使用全名【英文标题】:Imported module but still need to use full name 【发布时间】:2016-12-11 05:48:27 【问题描述】:我已经能够从 PyQt5 成功导入 QtWidgets,这在代码中运行良好,但是如果我在调用中不使用完整的 QtWidgets 名称,我会收到错误消息。下面的作品...
import sys
from PyQt5 import QtWidgets
app = QtWidgets.QApplication(sys.argv)
如果这样做的话……
import sys
from PyQt5 import QtWidgets
app = QApplication(sys.argv)
我明白了……
NameError: 名称“QApplication”未定义
【问题讨论】:
如果您认为from PyQt5 import QtWidgets
应该使您能够在不使用QtWidgets.whatever
的情况下引用事物,那么您不了解Python 导入的工作原理。看看the tutorial。
似乎是什么问题?在您的两个示例中,您都需要QtWidgets
,因为这是 Python 当前唯一知道的命名空间。如果你想要你想要的行为,请使用from PyQt5.QtWidgets import QApplication
这看起来解决了导入问题,但现在我得到这个应用程序无法启动,因为它无法在“”中找到或加载 Qt 平台插件“windows”。在同一行
【参考方案1】:
您对 Python import
语句如何工作的误解。在 Python 中导入模块时,只有直接导入的模块才会包含在本地符号表中。
因此,如果您没有直接导入名称,则它不能用作当前命名空间中的独立标识符。如果您想要这种行为,请直接从 QtWidgets
命名空间中导入 QApplication
名称:
from PyQt5.QtWidgets import QApplication
【讨论】:
【参考方案2】:像这样导入模块:
import sys
from PyQt5.QtWidgets import *
app = QApplication(sys.argv)
【讨论】:
不,不要使用通配符导入。在更复杂的项目中,它们将使追踪进口来源变得困难。以上是关于导入模块但仍需使用全名的主要内容,如果未能解决你的问题,请参考以下文章