我创建了一个包"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就可以了。