У меня есть проект со следующей (частичной) структурой каталогов
.
├── mypy.ini
├── src
│ ├── preppy
│ │ ├── cli.py
│ │ ├── __main__.py
│ │ ├── model.py
│ │ └── tools.py
├── pyproject.toml
└── tests
В cli.py
у меня есть следующий код (строки 13 и 14 в файле):
from .model import Problem
from .tools import get_abs_path, transcode
У меня также есть аналогичные стили относительного импорта в model.py
и __main__.py
Все похожие импорта вызывают ошибки как в pylint
(2.5.3), так и mypy
(0,761), когда инструменты автоматически запускаются в моей среде IDE ( Код - OSS), например:
Attempted relative import beyond top-level package pylint(relative-beyond-top-level) [13,1]
Cannot find implementation or library stub for module named '.model' mypy(error) [13,1]
Attempted relative import beyond top-level package pylint(relative-beyond-top-level) [14,1]
Cannot find implementation or library stub for module named '.tools' mypy(error) [14,1]
See https://mypy.readthedocs.io/en/latest/running_mypy.html#missing-imports mypy(note) [13,1]
Когда я добавляю в папку пустой файл __init__.py
, ошибки исчезают.
Мне это не нужно __init__.py
файл, чтобы пакет работал.
Я думал, что после PEP 420 он не должен требоваться, особенно если он нужен только для работы с линтерами.
Есть что-то иначе я делаю неправильно, или мне просто добавить __init__.py
и преодолеть это :)?
Конфигурация для pylint
находится в pyproject.toml
:
[tool.pylint.'MESSAGES CONTROL']
# Pylint and black disagree on hanging indentation.
disable = "C0330"
[tool.pylint.MISCELLANEOUS]
# Note: By default, "TODO" is flagged, this is disabled by omitting it
# from the list below.
notes = "FIXME,XXX"
Конфигурация для mypy
находится в mypy.ini
:
[mypy]
disallow_untyped_calls = True
disallow_untyped_defs = True
disallow_incomplete_defs = True
disallow_untyped_decorators = True
mypy_path = src
namespace_packages = True
[mypy-openpyxl]
ignore_missing_imports = True
[mypy-pulp]
ignore_missing_imports = True
[mypy-pytest]
ignore_missing_imports = True
Я бегу python 3.8.0.