假设我们有一个这样的函数定义: def f(*, model: Optional[Type[pydantic.BaseModel]] = None)因此,在您将某些内容作为 pydantic 传递之前,该函数不需要安装 model 。现在假设我们要将函数打包到 pypi 包中。我的问题是,是否有一种方法可以避免将 pydantic 仅仅为了类型检查而带入包依赖项中? 最佳答案 我试图关注 dspenser's advice ,但我发现 mypy 仍然给我 Name 'pydantic' is not defined 错误。然后我找到了这个 chapter in the docs 并且它似乎也适用于我的情况: from typing import TYPE_CHECKINGif TYPE_CHECKING: import pydantic您可以在 __future__.annotations (python 3.8.1) 中使用普通类(而不是字符串文字): from __future__ import annotationsfrom typing import TYPE_CHECKING, Optional, Typeif TYPE_CHECKING: import pydanticdef f(*, model: Optional[Type[pydantic.BaseModel]] = None): pass如果由于某种原因您不能使用 __future__.annotations ,例如你在 python dspenser's solution 的字符串文字输入。关于Python 打字 - 有没有办法避免导入可选类型(如果它是 None 的话)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60632275/
10-12 18:02