错误:“urljoin”的类型变量“AnyStr”的值在 mypy 中不能是

我有这样的声明:


import os

from urllib.parse import urljoin


ES_SEARCH_URL = urljoin(base=os.getenv("ELASTICSEARCH_URL"), url="index/_search")

我尝试为 提供多种类型ES_SEARCH_URL,但每当我运行 mypy.


error: Value of type variable "AnyStr" of "urljoin" cannot be "Optional[str]"

到目前为止我尝试过的选项:


from typing import Optional, AnyStr, Union

ES_SEARCH_URL: Union[str, None] = urljoin(base=os.getenv("ELASTICSEARCH_URL"), url="index/_search")

ES_SEARCH_URL: Optional[str] = urljoin(base=os.getenv("ELASTICSEARCH_URL"), url="index/_search")

ES_SEARCH_URL: Optional[AnyStr] = urljoin(base=os.getenv("ELASTICSEARCH_URL"), url="index/_search")

如何解决此错误?请帮忙。

Python版本:Python 3.8


蓝山帝景
浏览 77回答 1
1回答

MMMHUHU

由于os.getenvcan return Nonemypy 无法知道它是字符串值还是None.尝试给它一个默认值:os.getenv("ELASTICSEARCH_URL", default="http://some.url.example.com/")或处理None此案:base_url = os.getenv("ELASTICSEARCH_URL")if base_url is None:  # handle hereES_SEARCH_URL = urljoin(base=base_url, url="index/_search")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python