我正在尝试使用以下代码在Python 3.8中声明常量:
from typing import Final
这是Python 3.8中的新功能。有关详情,请参见https://docs.python.org/3/library/typing.html。Thonny IDE的捆绑式解释器(3.7)给出错误:
追踪(最近通话):文件“ ... / decimal_arithmetics.py”,第2行,在从输入import FinalImportError:无法从“键入”中导入名称“ Final”(/Applications/Thonny.app/Contents/Frameworks/Python.framework/Versions/3.7/lib/python3.7/typing.py)
这是可以理解的,虽然它是3.8版的新功能,但Thonny仍使用3.7版。
但是,随着解释器的首选项更改为单独安装的Python 3.8,我仍然有一个IDE warning:
第2行:模块“键入”没有属性“最终”
此警告的原因是什么?
请让我知道是否需要其他信息来澄清这个问题。
Thonny的助手使用Pylint和Mypy来提供警告。 Pylint通常用于检查代码是否使用正确的Python编码标准(PEP8),而Mypy用于检查Python的静态类型。在这种情况下,警告"Module 'typing' has no attribute 'Final'"
来自Mypy。
[现在,当解释器的Final
中确实存在typing
时,Mypy为什么会显示该警告?之所以显示警告,是因为它没有检查您的解释器的typing.py,而是在检查Thonny解释器的typing.py。设置为在Thonny的解释器上使用自己的解释器并不重要,助手将始终像在使用Thonny的解释器一样检查您的代码。
有几种方法可以阻止警告出现:
[您可以用口译员的typing.py替换Thonny口译员的typing.py,但这是有风险的,因为如果您决定使用Thonny口译员,可能会导致意外行为;
] >您可以关闭助手的Mypy检查。您可以通过以下方法执行此操作:Tools
-> Options...
-> Assistant
,然后取消选中Perform MyPy checks
。