Допустим, у меня есть проект со структурой
parent/
one.py
sub/
two.py
three.py
Где файл two.py
равен
x = 42
И three.py
:
from two import x
print(x)
Оператор импорта в three.py
будет работать правильно, так как эти файлы лежат в одном каталоге, но PyCharm пометит импорт как Неразрешенная ссылка :
Один из способов исправить это - попросить PyCharm пометить каталог sub
как источник root.Но тогда файлы внутри sub
будут видны всем остальным файлам в проекте, например, в one.py
.Но я бы хотел этого избежать.
Другой способ - записать импорт как import sub.two
.что я делаю прямо сейчас в моем проекте.Но это довольно неприятно, так как у меня есть глубокая структура папок.
Есть ли другой способ сделать это?
UPD: Изменение оператора импорта на
from .two import x
Вызовет ошибку
ModuleNotFoundError: No module named '__main__.two'; '__main__' is not a package
Также я заметил, что если я пытаюсь использовать относительный импорт из родительского каталога, например,
from ..one import y
Я получаю
ValueError: attempted relative import beyond top-level package
Так что я подозреваю, что это как-то связано с моей конфигурацией проекта и относительным импортом из каталога верхнего уровня проекта.Я попытаюсь углубиться в это, но я все равно буду благодарен за ответ от тех, кто уже сталкивался с этой проблемой.