Python 命令行的 -m 参数
1. 命令格式
2. 参数解释
在 sys.path
中搜索指定模块, 并以 __main__
模块执行其内容.
该参数是 模块名(注一), 不能输入文件扩展名(.py).
模块名应该是有效的绝对的 Python 模块名, 但是 Python
不对此作强制要求(例如, 允许使用含连字符 -
的名称).
包名称(包括命名空间包(注二))也允许使用. 使用包名称而不是普通模块名时,
解释器把 <pkg>.__main__
作为主模块执行.
3. 使用范例
创建一个名为 my_env
的 Python 虚拟环境
使用 pip 安装 Django
如果我们已经将 pip 添加到系统环境变量中去的话, 是可以直接使用 pip 命令的, 上面这个命令可以在系统中有多种版本的 Python 时给我们提供便利.
4. 补充
关于 sys.path
的说明.
所谓 sys.path
,
其实就是一个指明模块搜索路径的字符串列表(list). 详细内容可以参考文档 https://docs.python.org/3/library/sys.html#sys.path.
我们可以通过一个 Python 程序(我这里程序名为 draft04.py)来看一下这个
sys.path
是什么
然后在命令行执行
得到结果
我们可以看到, 这里输出了很多文件路径, 这些路径下就有很多 Python 的包,
我们上面执行的 python -m <module-name>
, 这里的的参数
<module-name>
就是从这些路径中搜寻而得, 比如,
python -m pip install django
中的 pip, 就是从
C:\Users\17309\AppData\Local\Programs\Python\Python38\lib\site-packages
路径中搜寻而得,
再比如, python -m venv my_env
命令中的 venv
命令是从
C:\Users\17309\AppData\Local\Programs\Python\Python38\lib
中搜寻而得,
5. 参考
https://docs.python.org/3/using/cmdline.html
注一: 所谓模块名, 就是我们平时写的带 .py
文件扩展名的
Python 脚本文件, 把 .py
去掉就是模块名.
注二: 命名空间包, 就是包内不含有 __init__.py
的包.