参考 python -m 和 python 直接运行的区别 - 云+社区 - 腾讯云
一分钟版本
>>> python xxx.py # 直接运行
>>> python -m xxx # 相当于import,叫做当做模块来启动
主要区别在于sys.path不同
- 直接运行会将该脚本所在目录添加至
sys.path - 当做模块启动则会将当前运行命令的路径添加至
sys.path
实际应用
假设我们有如下文件结构
package1/
|--__init__.py
|--mod1.py
package2/
|--__init__.py
|--run.py
在run.py中import了mod1.py
# run.py
from package1 import mod1
则
>>> python run.py # 失败,提示找不到package1
# 切换到package2 所在目录
>>> python -m package2.run # 成功
本文介绍了Python中直接运行脚本与使用`python-m`作为模块启动的区别,主要体现在`sys.path`的不同。直接运行会将脚本所在目录添加到`sys.path`,而`python-m`则将当前命令路径加入。通过实例展示了当脚本导入子模块时,如何正确使用`python-m`避免找不到模块的错误。

被折叠的 条评论
为什么被折叠?



