python -m 和 python 直接运行的区别
- 2019 年 12 月 20 日
- 筆記
一分钟版本
>>> 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 # 成功