tl; dr Используйте os.environ['SOME_VAR']
, если вы уверены, что он всегда есть
os.getenv
может и возвращает None
- mypy помогает в показывая, что у вас есть ошибка:
>>> repr(os.getenv('DOES_NOT_EXIST'))
'None'
>>> repr(os.getenv('USER'))
"'asottile'"
В качестве альтернативы, вы можете убедить mypy, что вы ожидаете его двумя разными способами:
- используя утверждения:
x = os.getenv('SOME_VAR')
assert x is not None, x
# mypy will believe that it is non-None after this point
с использованием приведения:
from typing import cast
x = cast(str, os.getenv('SOME_VAR'))
# mypy will believe that it is a `str` after this point
(у приведения есть некоторые недостатки, которые никогда не проверяются, тогда как утверждение, мы надеемся, приведет к провалу теста)
Я бы предложил не игнорировать эту ошибку / обойти ее и вместо этого использовать os.environ['SOME_VAR']
для вещей, которые вы ожидаете всегда иметь, или написать условие для проверки на случай ошибки, когда она отсутствует