ошибка «Исходный файл найден дважды» с mypy> = 0,780 в python для vscode

#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 без последствий?)