小编Ril*_*bbs的帖子

我如何正确设置 MYPYPATH 以获取 mypy 的存根?

我一生都无法让 MyPy 找到不与其源代码共存的存根。这是我的项目结构:

trymypy/
|- stubs/
|  \- foo.pyi
|- __init__.py
|- usefoo.py
\- foo.py
Run Code Online (Sandbox Code Playgroud)
trymypy/
|- stubs/
|  \- foo.pyi
|- __init__.py
|- usefoo.py
\- foo.py
Run Code Online (Sandbox Code Playgroud)
# foo.py
def foofunc(x):
    return str(x)
Run Code Online (Sandbox Code Playgroud)
# usefoo.py
from trymypy.foo import foofunc

print(foofunc(5) + 5)
Run Code Online (Sandbox Code Playgroud)

我已将MYPYPATH环境变量设置为/full/path/to/trymypy/stubs,以便 MyPy 应该在stubs目录中查找我的.pyi文件。

这不应该通过类型检查。MyPy 应该将错误标记为:

../trymypy/usefoo.py:3: error: Unsupported operand types for + ("str" and "int")
Run Code Online (Sandbox Code Playgroud)

相反,MyPy 不会标记任何错误,因为它没有读取存根文件。如果我将存根文件移动foo.pyi到目录的根项目中,并与 位于同一位置foo.py,它会正确标记,这向我表明MYPYPATH没有被拾取,或者没有被正确定义。

我也试过mypy_path在配置文件中设置mypy.ini:

[mypy] …
Run Code Online (Sandbox Code Playgroud)

python python-3.x mypy

9
推荐指数
1
解决办法
2881
查看次数

标签 统计

mypy ×1

python ×1

python-3.x ×1