发布于 

Python命令中的 -m 参数

首先看一下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 “安装过这个库了。


本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

本站由 @nnocase 创建,使用 Stellar 作为主题,您可以在 GitHub 找到本站源码。