Разница между `python file.py` и` python -m file` - PullRequest
0 голосов
/ 15 января 2020

В python3:

  • В чем разница между звонками python path/to/file.py и python -m path.to.file?

  • Как это влияет рабочий каталог? (os.getcwd())

  • Имеет ли он ссылку на наличие / отсутствие файла __init__.py, расположенного в path/to?

Я был удивлен тем, как мало информации я нашел по этим вопросам. Может быть, я не ищу правильные термины? Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 15 января 2020
python -m ...

используется для запуска python библиотечных модулей, таких как pip, I Python et c.

python file.py

, однако используется для запуска файлов с интерпретатором python.

1 голос
/ 15 января 2020

В чем разница между вызовами python path / to / file.py и python -m path.to.file?

Python -m module_name является ярлыком для вызывая определенный модуль. Часто это установленный пакет с модулем __main__.py внутри. (например, python -m pip вызывает pip/__main__.py

Так что python -m pip эквивалентно python path/to/my/python/lib/site-packages/pip/__main__.py

Как это влияет на рабочий каталог? (os.getcwd ())

Не

Имеет ли он ссылку на наличие / отсутствие файла init .py, расположенного в пути / к?

Во-первых: может возникнуть некоторая путаница, которую стоит прояснить: python -m не принимает путь в качестве аргумента. Для выполнения требуется имя модуля.

Итак, короткий ответ: нет.

Длинный ответ: как модуль, выполняемый по имени с python -m, зависит от того, является ли он пакетом. Наличие __init__.py может означать, что каталог это имя пакета, например pip, поэтому он будет искать __main__ внутри пакета.

...