python - “源文件找到两次”错误,mypy>=0.780 在 python 中用于 vscode
问题描述
在我的 python 项目中,mypy
从 0.770 升级到 0.782 后,在以前没有类型错误的文件中收到错误:
my_pkg_name\__init__.py: error: Source file found twice under different module names: 'top_pkg.my_pkg_name' and 'my_pkg_name'
Found 1 error in 1 file (checked 1 source file)
我很确定这与mypy 上的问题 #8944以及 vscode-python 在打开文件上执行 mypy 的方式有关。我尝试添加各种 mypy 标志(例如--namespace-packages
, --no-namespace-packages
),但这并没有解决问题。
my_pkg_name
确实包含一个__init__.py
,所以也包含top_pkg
。这mypy==0.770
不是问题。
查看扩展的输出,这是调用 mypy 的方式:
> ~\.virtualenvs\OfflineSystem.38\Scripts\python.exe `
c:\Users\***\.vscode\extensions\ms-python.python-2020.8.108011\pythonFiles\pyvsc-run-isolated.py mypy `
--ignore-missing-imports --follow-imports=silent --show-column-numbers `
d:\***\top_pkg\my_pkg_name\sub_pkg\my_file.py
是否应该更改 mypy 相关的 vscode 设置中的某些内容才能使其正常工作?
解决方案
我有一个类似的问题,但不是通过 VSCode。在我的情况下,解决方法是通过将__init__.py
文件添加到 MYPYPATH 中来从包含的目录中删除文件,因此实际上并未将其视为模块(因此它不应该真正拥有该__init__.py
文件)。
您说您尝试添加--namespace-packages
标志,但我认为您需要--no-namespace-packages
禁用可能导致您的问题的新检查器。
推荐阅读
- sql - SQL if else 在单个选择语句中过滤
- neo4j - neo4j union - 后处理结果
- javascript - React - 由于表单未连接而取消表单提交
- java - 如何在 ant - exec 中读取和处理标准输出值?
- regex - 从 Bash 中的常量输出中提取数字
- charles-proxy - 如何通过 Charles Proxy 监控热点流量?
- jquery - 字母列表未全部加载
- python-3.x - 为什么 pd.read_sql_query 真的很慢?
- selenium - 无法单击硒中的提交按钮
- android - 单击 fcm 通知以转到具有意图数据的特定活动