Объявление константной переменной в Python 3.8 запускает «Модуль« Типирование »не имеет атрибута« Конечный »» ошибка / предупреждение (Python 3.8, Thonny IDE) - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь объявить константы в Python 3.8 с помощью следующего кода:

from typing import Final

Это новый объект в Python 3.8. Подробнее см. https://docs.python.org/3/library/typing.html. Связанный интерпретатор Thonny IDE (3.7) выдает ошибку :

Traceback (последний вызов был последним): файл "... / decimal_arithmetics.py", строка 2, из типизация import Final ImportError: невозможно импортировать имя 'Final' из 'typing' (/Applications/Thonny.app/Contents/Frameworks/Python.framework/Versions/3.7/lib/python3.7/typing.py)

Это понятно, хотя это новая функция в версии 3.8, а Тонни все еще использует версию 3.7.

Однако, если в настройках изменился переводчик на отдельно установленный Python 3.8, у меня все еще есть IDE предупреждение :

Строка 2: Модуль У 'typing' нет атрибута 'Final'

В чем причина этого предупреждения?

Пожалуйста, дайте мне знать, если какая-то другая информация необходима для прояснения вопроса.

1 Ответ

1 голос
/ 03 мая 2020

Объяснение

Помощник Тонни использует Pylint и Mypy для предоставления предупреждений. Pylint в основном используется для проверки, использует ли код надлежащие стандарты кодирования Python (PEP8), в то время как Mypy используется для проверки типов * stati c для Python. В этом случае предупреждение "Module 'typing' has no attribute 'Final'" исходит от Mypy.

Теперь, почему Mypy показывает это предупреждение, когда Final существует в пределах typing на вашем интерпретаторе? Он показывает предупреждение, потому что он не проверяет typing.py вашего переводчика, он проверяет typing.py интерпретатора Thonny. Неважно, что вы настроили его на использование собственного интерпретатора вместо Thonny, помощник всегда проверяет ваш код, как если бы вы использовали интерпретатор Thonny.

Решение

Есть пара способы, которыми вы могли бы остановить появление предупреждения:

  1. вы можете заменить typing.py интерпретатора Thonny на typing.py вашего интерпретатора, но это рискованно, так как может привести к неожиданному поведению, если вы когда-нибудь решите использовать переводчика Тонни;

  2. вы можете отключить проверки Mypy для помощника. Вы можете сделать это, выполнив: Tools -> Options... -> Assistant и затем снимите флажок Perform MyPy checks.

...