在Python中,-m开关是哪个单词的快捷方式?

5

创建虚拟环境时,我运行:

python3 -m venv env

我知道-m执行一个模块(在这种情况下是venv)。我也知道它只有在你的模块中有一个__main__.py文件时才起作用。那么,快捷方式-m实际上代表什么?

是:

  1. -m代表模块还是
  2. -m代表__main__
  3. 其他?

我找不到明确的解释。以下是我调查的一些资源:


我总是喜欢把它看作是“-m”代表make,但我知道那是不正确的;) - martin-martin
3
-m 是用于模块的。 - Vineeth Sai
@VineethSai,你有没有任何明确说明这一点的资源?如果有,请发布它,我会将其作为答案接受。 - martin-martin
3
在1.1.1节中,它明确指出-m是模块名称 https://docs.python.org/2/using/cmdline.html - Vineeth Sai
它没有代表任何东西。 - Stop harming Monica
显示剩余3条评论
2个回答

4

在第1.1.1节中,明确指出-m是模块名,此处

引用文档:

"由于参数是模块名,因此不应给出文件扩展名(.py)。模块名称应为有效的Python模块名称"

尽管-m是任意的,因为在后端它是一个argparser完成所有工作。

使用-m module-name调用时,给定的模块位于Python模块路径上并作为脚本执行。

还允许使用包名称。当提供包名称而不是普通模块时,解释器将执行<pkg>.__main__ 我想main也以'm'开头只是巧合。


2
嘿,我认为你提供的文档并没有清楚地解释-m代表什么。虽然我还可以接受你的答案,但你能否改进一下,提供这个句子的链接:当使用-m模块名时,给定的模块将在Python模块路径上找到并作为脚本执行。并使用更加更新的Python文档:https://docs.python.org/3.7/using/cmdline.html。 - martin-martin
更新了。谢谢。 - Vineeth Sai
当运行python -m pkg时,如果pkg有一个__main__文件,则它也会运行。但是__init__文件呢? - variable

1
它运行跟随-m的模块。请参见官方文档
文档中说-m <module-name>,以及“因为参数是模块名...”,所以可以推断出“m”代表模块。

3
问题是“m代表什么”,而不是“-m标志有什么作用”。 - Aran-Fey

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