导入模块但仍需使用全名

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)

【讨论】:

不,不要使用通配符导入。在更复杂的项目中,它们将使追踪进口来源变得困难。

以上是关于导入模块但仍需使用全名的主要内容,如果未能解决你的问题,请参考以下文章

python中常用的内建模块

Apache 端口已更改,但仍需 http://localhost:81/dashboard/

水题但仍需细心

112.模块导入

112.模块导入

python导入模块的方法都有哪些