0

我有一个test.py只包含行的文件import black。当我运行时mypy test.py,我收到以下错误:

test.py:1: error: Skipping analyzing 'black': found module but no type hints or library stubs
test.py:1: note: See https://mypy.readthedocs.io/en/latest/running_mypy.html#missing-imports
Found 1 error in 1 file (checked 1 source file)

但是,当我查看 的来源black,似乎所有内容都有类型提示。我需要做些什么不同的事情mypy才能让它在我导入时使用类型提示black

环境设置:

conda create -n test python=3.7 -y
conda activate test
pip install black mypy

编辑 - 从错误消息中提到的链接

Mypy 不会尝试推断您已安装的任何 3rd 方库的类型,除非它们已声明自己是符合 PEP 561 的存根包或已在 typeshed 上注册自己

我假设black已经满足其中一项要求,但它似乎没有在typeshed上注册。从这里开始,似乎一个包必须有一个py.typed符合 PEP 561 并带有内联注释的文件,而且black似乎也没有。

我的问题仍然存在 - 鉴于输入信息已经存在black,我如何(无需在某处获得 PR 批准)mypy使用它?

我没有看到有关该py.typed文件的任何详细信息 - 如果这只是一个空文件并且只有它的存在很重要,我假设我可以在某处创建它然后输入会起作用吗?

4

1 回答 1

0

编辑 - 现在已修复此问题black此处为 PR,2020 年 5 月 8 日合并),因此在新版本中无需解决方法。


在安装目录中创建一个名为的空文件py.typed就足够了:

cd ~/anaconda/envs/test/lib/python3.7/site-packages # or wherever your packages are installed
# black.py is directly in site-packages, but py.typed needs to be in a directory for the module
mkdir black
touch black/py.typed
于 2020-03-25T20:00:44.000 回答