Динамический импорт модулей не работает в Python - почему бы и нет? - PullRequest
2 голосов
/ 28 октября 2019

Я пытаюсь динамически импортировать скрипт Python foo.py в другой исполняемый скрипт, который находится в глубоко вложенной папке. Я использую

import os
sys.path.insert(0, '../../../../.') 
from foo import Bar

, это работает, и я могу с удовольствием использовать Bar.

Я бы хотел, чтобы скрипт динамически определял глубину папки, например

import os
root_path = os.path.relpath(os.popen("git rev-parse --show-toplevel").read()).replace("../reponame", ".")
print(root_path) # prints '../../../../.'
sys.path.insert(0, root_path)
from foo import Bar

Однако это не работает, скрипт жалуется, что не может найти Bar при запуске.

Почему это так?

1 Ответ

2 голосов
/ 28 октября 2019

Если вы отлаживаете, вы видите root_path на самом деле '../../../../.\n'. Удалить \n

root_path.strip()
...