#python #visual-studio-code #mypy #vscode-python
#python #visual-studio-code #mypy #vscode-python
Вопрос:
В моем проекте 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)
Я почти уверен, что это связано с проблемой # 8944 в mypy и способом, которым vscode-python выполняет mypy для открытых файлов. Я пытался добавить различные флаги mypy (например, --namespace-packages
, --no-namespace-packages
), но это не решило проблему.
my_pkg_name
действительно содержит __init__.py
и так top_pkg
. С mypy==0.770
это не было проблемой.
Глядя на вывод расширения, вот как вызывается mypy:
> ~.virtualenvsOfflineSystem.38Scriptspython.exe `
c:Users***.vscodeextensionsms-python.python-2020.8.108011pythonFilespyvsc-run-isolated.py mypy `
--ignore-missing-imports --follow-imports=silent --show-column-numbers `
d:***top_pkgmy_pkg_namesub_pkgmy_file.py
Следует ли что-то изменить в настройках vscode, связанных с mypy, чтобы это сработало?
Ответ №1:
У меня была похожая проблема, но не через VSCode. Исправление в моем случае заключалось в удалении __init__.py
файла из каталога, который был включен, путем добавления его в MYPYPATH, и поэтому фактически не рассматривался как модуль (так что на самом деле у него не должно было быть __init__.py
файла).).
Вы сказали, что пытались добавить --namespace-packages
флаг, но я думаю, вам нужно --no-namespace-packages
отключить новую проверку, которая может быть причиной вашей проблемы.
Комментарии:
1. Спасибо @dshepherd, к сожалению,
--no-namespace-packages
в моем случае тоже не сработало. Точно такая же проблема сохраняется. Я попытаюсь посмотреть, может ли новая информация, которую вы предоставляете здесь, каким-либо образом помочь мне, и опубликую решение, если я его найду.2. удаление init .py из корневого каталога сработало для меня.
3.
--no-namespace-packages
сработало для меня. (Кто может просто удалить корень своего пакета__init__.py
без последствий?)