Заставить Pycharm видеть пакеты в подкаталоге, не добавляя его в качестве исходного корня - PullRequest
0 голосов
/ 31 мая 2018

Допустим, у меня есть проект со структурой

parent/
    one.py
    sub/
        two.py
        three.py

Где файл two.py равен

x = 42

И three.py:

from two import x

print(x)

Оператор импорта в three.py будет работать правильно, так как эти файлы лежат в одном каталоге, но PyCharm пометит импорт как Неразрешенная ссылка :

Screenshot

Один из способов исправить это - попросить 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

Так что я подозреваю, что это как-то связано с моей конфигурацией проекта и относительным импортом из каталога верхнего уровня проекта.Я попытаюсь углубиться в это, но я все равно буду благодарен за ответ от тех, кто уже сталкивался с этой проблемой.

...