python -m xxx.py 和python xxx.py 有什么区别
这是两种加载py文件的方式:
叫做直接运行(python xxx.py)
把模块当作脚本来启动(python -m xxx.py)
不同的加载py文件的方式,主要是影响——sys.path 这个属性。sys.path 就相当于liunx中的PATH
这个特性有什么用呢
# 目录结构如下
p1/
__init__.py
m.py
p2/
__init__.py
run.py
# run.py 内容如下
import sys
from p1 import m
print(sys.path)
如何才能启动run.py文件?
直接启动(失败)
>>>python p2/run.py
#ImportError: No module named package
以模块方式启动(成功)
>>>python -m p2.run
当需要启动的py文件引用了一个模块。你需要注意:在启动的时候需要考虑sys.path中有没有你import的模块的路径!
这个时候,到底是使用直接启动,还是以模块的启动?目的就是把import的那个模块的路径放到sys.path中。