Почему не работает относительный import в Python (PyCharm)?
Есть следующая архитектура проекта:
Проблема заключается в неисправности относительного импорта. Т.е. в теории все должно работать, как надо, но что-то идет не так.
В файле main.py я пишу from . import sieves.py. Т.е. делаю относительный импорт.
Так же в файле test_1.py я тоже импортирую этот файл и пишу from .. import sieves.py.
PyCharm не ругается и не подчеркивает это, как ошибку, но при запуске я получаю это:

Это очень странно, ведь я указал рабочую директорию и даже проверил ее через os.getcwd(). Я видел такую же проблему на нашем всеми любимом портале, и там было решение указать именно рабочую директорию. Но мне это не помогло.
Заранее благодарю за ответы!
Ответы (2 шт):
Попробуйте просто import sieves, интерпретатор по идее должен рассматировать директорию package как main директорию проекта, при наличии __main__ в ней
Я со всем разобрался! Оказывается, я не так понимал импорт в Python.
- Дело в том, что когда мы запускаем какой-либо файл, для Python нет ничего выше этого ЗАПУЩЕННОГО файла. Т.е. запущенный файл является корнем, и мы не сможем при импорте подняться выше него, даже если там будут какие-то другие модули/пакеты. Мы можем импортировать в ЗАПУЩЕННЫЙ файл (у которого name == "main") только пакеты и модули, находящиеся на одном уровне с ним или ниже.
- main.py делает ПАКЕТ, в котором он лежит, ЗАПУСКАЕМЫМ. Поэтому у меня не работала команда python main.py. Нужно в таком случае использовать python -m package, где -m говорит, что надо запустить как модуль.
- Использовать main.py в самом корне каталога удобно тем, что у нас никогда ничего не будет выше этого файла. Значит, мы не запутаемся при импорте и всегда будем импортировать только то, что рядом с файлом и что ниже его по уровню. Еще раз: main.py лишь делает ПАКЕТ запускаемым.
Надеюсь, кому-то поможет :)
