我有這樣的聲明:import osfrom urllib.parse import urljoinES_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, UnionES_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
1 回答

MMMHUHU
TA貢獻1834條經驗 獲得超8個贊
由于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 here
ES_SEARCH_URL = urljoin(base=base_url, url="index/_search")
添加回答
舉報
0/150
提交
取消