【问题标题】:What does the -m option stand for in python?-m 选项在 python 中代表什么?
【发布时间】:2019-02-25 17:15:36
【问题描述】:

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

python3 -m venv env

我了解-m executes a module(在这种情况下为venv)。但是,-m 标志实际上代表什么?

模块-m,还是__main__-m

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

【问题讨论】:

  • 我一直喜欢将其视为 make-m,但我知道这是不正确的; )
  • -m 用于模块
  • 您是否有任何资源可以清楚地说明这一点@VineethSai?如果是这样,请发布它,我会接受它作为答案。
  • 在第 1.1.1 节中明确表示 -m 是模块名称 docs.python.org/2/using/cmdline.html
  • 它不代表任何东西。

标签: python python-3.x command-line


【解决方案1】:

在 第 1.1.1 节 它清楚地表明-m 是模块名称here

引用文档:

“因为参数是模块名,所以不能提供文件扩展名(.py)。模块名应该是一个有效的 Python 模块名”

虽然-m 在后端是任意的,但它是一个 argparser 完成所有工作。

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

包名也是允许的。当提供包名称而不是普通模块时,解释器将执行 <pkg>.__main__ 我猜 main 也以“m”开头是巧合。

【讨论】:

  • 嘿,我认为您链接的文档没有清楚地解释这就是-m 的含义。我仍然可以接受您的回答,但您能否通过链接这句话来改进它:When called with -m module-name, the given module is located on the Python module path and executed as a script. 并使用更新的 Python 文档:docs.python.org/3.7/using/cmdline.html
  • 已更新。谢谢
  • 当 python -m pkg 运行时,如果 pkg 有一个 main 文件,那么它也会运行。但是 init 文件呢?
【解决方案2】:

它运行-m 之后的模块。见the official documentation

文档说-m <module-name>,以及“由于参数是模块名称......”,因此假设“m”代表模块是有意义的。

【讨论】:

  • 问题是“m 代表什么”,而不是“-m 标志有什么作用”。
猜你喜欢
  • 2018-07-07
  • 2020-02-25
  • 1970-01-01
  • 2018-12-28
  • 2017-12-28
  • 2014-01-16
  • 1970-01-01
  • 2014-04-10
  • 2012-08-14
相关资源
最近更新 更多