Python Option -m [Python -m 使用]
Published: Oct. 29, 2021
Python的 -m
选项[option], 作用是将模块当作脚本来运行。
这里先介绍一个特殊变量__name__
[官方解释], __name__
是当前模块名,当模块被直接运行时模块名为__main__
, 当模块是被导入时, __name__
就是模块本身的名字。所以,通过import
方式来引入模块,__name__
不等于__main__
,而是当前的模块名称,但是任何在 if __name__ == '__main__':
下的代码都不会被执行。
我们在命令行下运行一个python文件的时候,需要指定这个文件的路径,然后python默认只会在当前路径下查找这个文件。在命令行加上-m参数,可以使python在查找路径的时候,除了当前路径,还去查找标准库的路径。
一般情况,我们只是import
标准库,但是加上 -m
参数就可以直接运行标准库。简单来说,-m
给了第三方库一个直接运行的机会。比如下面的代码:
$ python3 http.server
# Output: python3: can't open file 'http.server': [Errno 2] No such file or directory
$ python3 -m http.server
# Output: Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
所以如果通过-m
直接运行本地package的时候,那么这个文件夹中必须包含一个名为 __main__.py
的文件,否则抛出异常(can’t find ‘main’ module in ‘project’)。也就是说,当执行 python -m folder/package
的时候,__main__.py
会被首先调用和执行。