VSCode / Pylint не может найти модуль в том же каталоге - PullRequest
0 голосов
/ 04 мая 2019

У меня следующая структура каталогов:

.
├── Pipfile
├── Pipfile.lock
└── src
    ├── config.py
    ├── __init__.py
    └── main.py

Содержимое config.py:

FOO = 'bar'

Содержание main.py:

import config

print(config.FOO)

__init__.py пуст.

При вышеуказанной настройке VSCode \ Pylint жалуется, что config has no FOO member.

Если я удалю __init__.py, предупреждение исчезнет.

Почему это происходит и как правильно решить эту проблему?

1 Ответ

0 голосов
/ 17 мая 2019

Это происходит потому, что import config - это абсолютный импорт, что означает, что Python пытается найти config в качестве пакета или модуля верхнего уровня.Но когда у вас есть файл __init__.py, вы делаете каталог src/ пакетом, поэтому Python воспринимает src/config.py не как config, а как src.config.Когда вы удаляете __init__.py, расширение Python для VS Code предполагает, что вы хотите, чтобы ваш каталог src/ просто рассматривался как папка, в которой вы храните код, и, следовательно, выполняет дополнительную работу, чтобы Python запускался с src/, а не с верхнимвашего рабочего пространства.

...