@KondakovVladimir

Почему не видны модули внутри пакета?

Всем привет! Столкнулся с непонятным поведением pylint в microsoft visual studio code. Структура каталога:
test\
  a.py
  b.py
  c.py

в модуле a.py вот такой код
import b
import c

def test():
    b.say()
    c.say()

if __name__ == "__main__":
    test()

Код работает и не выдает ошибок
если добавить в каталог файл индекса __init__.py pylint начинает выдавать ошибку "Unable to import 'b'",
при этом код продолжает работать, но если вызвать этот модуль извне, выдает ошибку
File "/test_bot.py", line 29, in <module>
    import test.a as test
  File "/test/a.py", line 1, in <module>
    import b
ModuleNotFoundError: No module named 'b'


Получается что модули внутри пакета не могут видеть друг друга. Это так? Или я что-то делаю не так?
  • Вопрос задан
  • 180 просмотров
Пригласить эксперта
Ответы на вопрос 1
@KondakovVladimir Автор вопроса
Нашел решение, но возможно это костыль
if __name__ == "__main__":
    import b
    import c
else:
    from test import b
    from test import c


Если модуль запускается сам - для него актуален вызов через import, если же как часть пакета - то доступен импорт через from

по крайней мере это работает, несмотря на ошибку от линтера
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы