我使用poetry
维护两个存储库,我们称它们为repo_main
和repo_dependency
。它们都使用python 3.8
并具有mypy
(v0.942
)类型提示,顾名思义,repo_main
依赖于repo_dependency
。现在,当我在repo_main
上运行mypy
时,repo_dependency
的类型提示实际上被忽略了,并被有效地视为Any
s。然后我尝试将py.typed
文件添加到repo_dependency
的每个子包中,没有结果,类型仍然被忽略。repo_dependency
的结构看起来有点像这样:
repo_dependency/
- repo_dependency/
- package1/
- __init__.py
- py.typed
- stuff.py
- package2/
- __init__.py
- py.typed
- stuff.py
- __init__.py
- py.typed
- other_non_distributed_things/
知道我可能做错了什么吗?
对我来说,从文档中根本看不清楚。添加py.typed
文件并不能让mymyy在包源中查找类型信息。Mypy将只在存根文件中查找此类信息(对于外部包)。此外,将.pyi
存根文件放在包源旁边也不会说服我查看这些存根文件。
因此,需要添加和py.typed
文件和.pyi
存根文件
对我来说,这似乎是非常多余的,这就是为什么我们需要两者的原因。