Python: переключение из режима сценария в режим модуля - PullRequest
0 голосов
/ 22 апреля 2020

У меня сложная структура репозитория с несколькими подпакетами:

/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 делает абсолютный импорт действительным, но относительный импорт все еще остается проблемой.

...