Python命令中的 -m 参数

2020-04-22 15:01:46

请用微信扫描二维码

请用微信扫码分享

首先看一下python --help里的帮助文档

$ python --help
Options and arguments (and corresponding environment variables):
-b     : issue warnings about comparing bytearray with unicode
         (-bb: issue errors)
-B     : don't write .py[co] files on import; also PYTHONDONTWRITEBYTECODE=x
-c cmd : program passed in as string (terminates option list)
-d     : debug output from parser; also PYTHONDEBUG=x
-E     : ignore PYTHON* environment variables (such as PYTHONPATH)
-h     : print this help message and exit (also --help)
-i     : inspect interactively after running script; forces a prompt even
         if stdin does not appear to be a terminal; also PYTHONINSPECT=x
-m mod : run library module as a script (terminates option list)
-O     : optimize generated bytecode slightly; also PYTHONOPTIMIZE=x
-OO    : remove doc-strings in addition to the -O optimizations
-R     : use a pseudo-random salt to make hash() values of various types be
         unpredictable between separate invocations of the interpreter, as
         a defense against denial-of-service attacks

-m mod run library module as a script (terminates option list)

“mod“是module的缩写,即“-m“选项后面的内容是 module(模块),其作用是把模块当成脚本来运行。

“terminates option list”意味着“-m”之后的其它选项不起作用,在这点上它跟“-c”是一样的,都是“终极选项”。官方把它们定义为“接口选项”(Interface options),需要区别于其它的普通选项或通用选项。

-m 选项的几个典型用法

1、一行命令实现一个简单的HTTP服务

python -m http.server 8000

# 注:在 Python2 中是这样
python -m SimpleHTTPServer 8000

执行后,在本机打开 “http://localhost:8000”, 或者在局域网内的其它机器上打开 “http://本机ip:8000” ,就能访问到执行目录下的内容。

2、python -m pydoc -p 8000 与第一个类似,需要一行命令“python -m pydoc -p 8000”,就能生成 HTML 格式的官方帮助文档,可以在浏览器中访问。

3、python -m pdb xxx.py 执行 pdb 的调试命令“python -m pdb xxx.py”,以调试模式来执行“xxx.py”脚本

4、python -m timeit "'-'.join(map(str, range(100)))" 测试代码运行时间,多对比一些代码,可以直观的看出代码的效率差异。以此来优化自己的代码。

5、python -m pip install ... 可能我们已经习惯用“ pip install ... “来安装第三方库, 但是,Python 的核心开发者、第一届指导委员会五人成员之一的 Brett Cannon 专门写了一篇博客《Why you should use "python -m pip"》,提出应该使用“python -m pip”的方式,并做了详细的解释。

他的主要观点是:在存在多个 Python 版本的环境中,这种写法可以精确地控制三方库的安装位置。例如用“python3.8 -m pip”,可以明确指定给 3.8 版本安装,而不会混淆成其它的版本。

6、python -m virtualenv env 创建项目的虚拟环境,前提是已经用“python -m install virtualenv “安装过这个库了。