Как Python по-разному относится к sys.path.insert (path) и импорту package_path.module - PullRequest
0 голосов
/ 04 сентября 2018

Я использую pycharm и не смог перейти к базовому классу из кода дочернего класса в следующем формате для следующей структуры проекта

dir 1 Базовый класс реж. 2 Детский класс когда я импортирую класс таким способом, pycharm не может перейти к базовому классу, но файл Python выполняется правильно

sys.insert.path("../dir1/")
import baseclass

Когда я импортирую класс, используя

import dir1.baseclass

Заставляет pycharm понять, где находятся базовые классы, и я перехожу к нему с помощью ярлыков. В этом случае скрипты Python выполняются правильно с pycharm.

Я не могу понять, как python автоматически может определить путь baseclass.py в import dir1.baseclass, потому что я никогда не определял относительный или абсолютный путь dir1. Предполагается ли автоматически, что dir1 будет на том же уровне каталогов, что и дочерний класс?

И почему pycharm ведет себя по-разному с этими операторами для навигации, работает одинаково для выполнения?

1 Ответ

0 голосов
/ 04 сентября 2018

Обычно, когда вы вызывали Python для запуска архива, он определял каталог, содержащий этот архив, как рабочий каталог . После этого интерпретатор Python попытался разрешить импорт и для этого сначала проверил этот импорт в рабочем каталоге.

Однако, когда вы использовали import dir1.baseclass, вы сказали Python, что базовый класс файла находится не в рабочем каталоге, а в одном из его подкаталогов, в данном случае внутри ../WorkingDirecory/dir1/, поэтому Python перешел туда и импортировал класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...