`python file.py`和`python -m file`之间的区别

3
在Python3中:
  • 调用python path/to/file.pypython -m path.to.file之间有什么区别?

  • 它如何影响工作目录? (os.getcwd())

  • 它是否与位于path/to中的__init__.py文件的存在/不存在有关联?

我对这些问题找到的资料很少感到惊讶。也许是我没有使用正确的术语进行搜索?先行致谢!
2个回答

3
调用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())有什么影响吗?
没有。
它是否与位于path/to中的init.py文件的存在/不存在有关?
首先:可能有一些值得澄清的混淆点:"python -m"不接受路径作为参数。 它接受要执行的模块名称。
所以简短的答案是:不会。
长话短说:使用“python -m”按名称执行模块取决于它是否为包。 有“__init__.py”的存在可以表示该目录是一个包的名称,就像pip一样,因此它将在包内查找“__main__”。

2
python -m ...

Python解释器用于运行Python库模块,例如pip、IPython等。

python file.py

然而,它用于使用Python解释器运行文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接