python3 / mypy:如何管理存根文件?



我创建了一个包"mypackage"使用输入提示。

我将mypackage导入到一个新的模块mymodule中(不是mypackage的一部分),该模块也使用了输入提示。

我想在mymodule上应用mymyy,但是get:

错误:无法找到名为'mypackage'的模块的实现或库存根

我一直在阅读关于存根的文档:

https://mypy.readthedocs.io/en/stable/stubs.html存根文件

然而,我不清楚什么是最佳实践。

这是一个工作,但感觉效率低下的东西。

  • 我创建了一个包"mypackage"输入所有代码。
  • 我在包的根目录下调用stubgen,它会用存根文件创建。/out/myppackage文件夹
  • 我将这个生成的目录移动到一个存放其他包的存根的文件夹中,例如/path/to/stub
  • 我将环境变量MYPYPATH设置为/path/to/stub

mypy mymodule.py

现在可以工作了,但这是最好的方法吗?

  • 关于类型的信息已经在源代码中了,但是这些信息在pyi文件
  • 中重复了。
  • 我们作为一个小组工作:每个人都必须生成存根并将它们复制到他们本地的存根文件夹
  • 当代码更新时,每个人都必须重新生成存根

很可能,我错过了一些东西。有没有更简单的方法把mymyy应用到mymodule ?

问题中的错误信息在使用mypy版本0.761时显示,但版本0.950提供了更好的信息,因为它指向:

https://mypy.readthedocs.io/en/stable/running_mypy.html缺少导入

依次指向:

https://mypy.readthedocs.io/en/stable/installed_packages.html安装的包

表示myppackage的setup.py应该包括:

from distutils.core import setup
setup(
# ...
package_data={"mypackage": ["py.typed"]},
#...
)

和一个空文件py。type应该放在myppackage文件夹中。

在安装了mypackage (pip)之后,在mymodule上应用mypy就可以了。

最新更新