Как исправить разрешение пути для импорта - PullRequest
0 голосов
/ 31 марта 2020

У меня проблема с импортом пакетов в проект, когда я объединил свою часть в запрос на извлечение с большим проектом. runner.py использует модули и скрипты в каждом из подкаталогов в Dir 2. Некоторым из этих модулей в подкаталогах теперь требуется доступ к модулям в Dir 1 и Dir 3.

Я попытался добавить систему путь, который не является правильным способом сделать это, но, кажется, работает для одних вещей и ломает другие. Я попытался указать родительский каталог, но это не работает, потому что Python меняет рабочий каталог при вызове. Поэтому, если я начну с Project Directory и сделаю python Dir_2/runner.py, мой действительный рабочий каталог будет Project Directory/Dir_2, а не Project Directory. Если я sys.path.append(os.getcwd()), я нарушаю некоторые стандартные импортные библиотеки. Что мне здесь не хватает?

Вещи, которые я пробовал

  • Использовать относительные ссылки путем добавления. или .. на фронт импорта. Это создает

    __ main__модуль не существует или «Вы пытаетесь получить доступ к каталогу выше root этого проекта».

Shape проекта

  • Каталог проекта
    • Dir 1
    • Dir 2
      • runner.py
      • SubDir 1
      • SubDir 2
      • SubDir 3
    • Dir 3

1 Ответ

2 голосов
/ 31 марта 2020

Не запускайте файлы в подкаталогах, как если бы они были скриптами. Если это часть структуры пакета, то это модуль , а не сценарий, поэтому запустите его как один:

python -m dir2.runner
...