Python -m ключ для запуска модуля внутри пакета - PullRequest
1 голос
/ 27 октября 2019

Я читаю эту статью .

Мне интересно, почему приведенное ниже утверждение из статьи верно? Поскольку я могу использовать решение 1 - то есть - python -m packA.a2, и оно отлично работает.

Чтобы дать вам некоторый контекст, Решение 1 говорит:

Используйте абсолютный импорт с корнем в каталоге test / (т. Е. Средний столбец в таблице выше). Это гарантирует, что прямой запуск start.py всегда будет работать. Чтобы запустить a2.py напрямую, запустите его как импортированный модуль, а не как скрипт:

  1. измените каталоги на test/ в консоли
  2. python -m packA.a2

Но в Дело 3 Автор говорит:

sys.path может измениться (взять 2)

Более сложная проблема - следующий пример. Предположим, что a2.py никогда не нужно запускать напрямую, но он импортируется как start.py, так и a1.py, которые запускаются напрямую.

В этом случае использование Решения 1, описанного выше, не будет работать. Тем не менее, другие решения остаются в силе.

Но я попробовал это и заставил работать, используя python -m packA.a1

...