-m 开关的作用是什么?
简介
-m选项扩展了 Python 的功能,实现了模块执行和开发的多功能性。它具有三个主要作用:
1。按模块名称执行模块
python -m
2.增强的模块路径解析
使用 -m 时,当前工作目录将添加到 sys.path。这允许从当前目录导入模块,从而无需安装即可执行本地包。
3.支持相对和绝对导入
-m 在执行模块时处理绝对和相对导入。这允许开发人员以相同的方式使用导入,无论模块是从命令行还是通过 import 语句执行。
历史发展
最初,- m 仅支持顶级模块名称。在 PEP 338 中,它被扩展为包括子模块和父包初始化。最后,PEP 366 引入了对显式相对导入的支持。
用例
-m 在两种场景中表现出色:
限制
-m 有一个显着的限制:它只能执行 Python 代码模块 (*.py)。 C 编译的代码模块将无法使用 -m 成功运行。
与其他模块执行方法的比较
执行方法 | sys.path修改 |
|
package设置 | init评估 | main评估 | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
无变化 | 绝对模块名称 | 父包 | 是(包仅) | 否(仅包) | |||||||||||||||||||||||||
带文件名的命令行 | 文件名的最终目录 | '__main__' | 无 | 否(所有模块) | 是(包模块) | ||||||||||||||||||||||||
命令与模块名称一致的行(-m) | 当前目录 | '__main__' | 父包 | 是(仅限包) | 是(封装模块) |
结论
-m 开关为开发人员提供了用于模块执行和开发的多功能工具。它提供了模块查找的灵活性,支持动态路径解析,并有利于复杂Python代码的无缝执行。
以上是Python 中的'-m”开关有什么作用?的详细内容。更多信息请关注PHP中文网其他相关文章!