在 PyCharm 中键入提示特定模块
Posted
技术标签:
【中文标题】在 PyCharm 中键入提示特定模块【英文标题】:Type hint a specific module in PyCharm 【发布时间】:2021-09-12 22:52:06 【问题描述】:考虑以下代码:
PyCharm 会自动感知这是一个可以引用一个或多个支持库的模块。
是否也可以为其他模块变量手动指定这个?类似于以下内容:
from pyqtgraph.Qt import QtWidgets
QtWidgets: Union[PyQt5.QtWidgets.pyi, PySide2.QtWidgets.pyi] # <-- I want to add this type hint
在幕后,pyqtgraph
正在动态构造虚拟QtWidgets
以在运行时指向多个库之一,但 PyCharm 不知道这一点。有没有办法让我手动将该类型提示 (QtWidgets.pyi
) 添加到我导入的模块(在本例中为 pyqtgraph.Qt.QtWidgets
)?
我也发了here,供参考。
【问题讨论】:
【参考方案1】:正如您在此处看到的,它没有向我显示sys.Test
的提示,因为它不存在。
你能做什么 - 你可以使用存根,也就是 .pyi 文件。
我刚刚添加了一个sys.pyi
文件,[它必须与您的模块命名相同,在您的情况下为pyqtgraph.pyi
]。
它不评估文件,而是使用它来收集类型提示。
结果是
而sys.pyi
的内容是:
Test: bytes
您可以在此处阅读有关存根的信息:https://www.jetbrains.com/help/pycharm/stubs.html
【讨论】:
这行得通,谢谢!我将它与***.com/a/63552927/9463643 结合起来以避免存根整个库,所以我只是将您的pyi解决方案添加到动态模块中。 编辑:链接的 SO 帖子实际上并没有为其余方法提供智能感知——它只是防止 PyCharm 引发错误......看起来必须在任何地方或任何地方定义存根,然后...... . 关注youtrack.jetbrains.com/issue/PY-46104 存根仅用于类型提示,不会在任何地方执行。 对——但目前在 PyCharm 中,如果您为单个子模块添加存根,PyCharm 希望您为其他所有内容提供存根,否则会破坏所有剩余的代码完成 哇,我不知道,我的工作完美,因为它搜索 .pyi 文件,如果它没有找到任何特定模块,它只使用普通的 .py 文件收集类型提示。无论如何感谢您的承认!以上是关于在 PyCharm 中键入提示特定模块的主要内容,如果未能解决你的问题,请参考以下文章
ubuntu中pycharm安装package提示Install packaging tools解决
为啥 PyCharm 不建议为 django 模型自动填充?