У меня сложная структура репозитория с несколькими подпакетами:
/foo/file1.py
/foo/file2.py
/foo/bar/file3.py
/common/shared.py
(очень упрощенная версия)
Все ссылки на пакеты являются либо явно относительными, либо абсолютными по сравнению с root. Все работает нормально, но мне нужно запустить все скрипты как модули, используя их полное имя из root, например: python -m foo.file1
. Рекомендации по кодированию для хранилища есть и останется использовать этот шаблон для запуска сценариев.
И все же, есть ли способ сделать несколько файлов запускаемыми в качестве сценария в этой настройке?
Для Например, я могу sh Я мог бы сделать:
if not __package__:
__package__ = "foo.bar"
# use relative or absolute imports as if the file was run with python -m
Я уже пытался importlib
или runpy
безуспешно. Использование sys.path.append
делает абсолютный импорт действительным, но относительный импорт все еще остается проблемой.