- python xxx.py
- python -m xxx.py
这是两种加载py文件的方式:
1叫做直接运行
2相当于import,叫做当做模块来启动
不同的加载py文件的方式,主要是影响——sys.path 这个属性。sys.path 就相当于系统中的PATH。
1 2 3 4 5 |
>>> import sys >>> sys.path ['', 'C:\\Program Files\\Python35\\python35.zip', 'C:\\Program Files\\Python35\\DLLs', 'C:\\Program Files\\Python35\\lib', 'C:\\Program Files\\Python35', 'C:\\Program Files\\Python35\\lib\\site-packages'] >>> |
sys.path为当前python解释器运行的环境,python解释器会在这些目录下去 寻找依赖的库!
PS:上例输出中,第一项的空白值 ''
表示当前目录。
新写一个脚本test.py,
1 2 3 4 5 |
import sys print(sys.path) print(__name__) |
直接启动:
1 2 3 4 |
E:\Python>python test.py ['E:\\Python', 'C:\\Program Files\\Python35\\python35.zip', 'C:\\Program Files\\Python35\\DLLs', 'C:\\Program Files\\Python35\\lib', 'C:\\Program Files\\Python35', 'C:\\Program Files\\Python35\\lib\\site-packages'] __main__ |
以模块方式启动:
1 2 3 4 |
E:\Python>python -m test.py ['', 'C:\\Program Files\\Python35\\python35.zip', 'C:\\Program Files\\Python35\\DLLs', 'C:\\Program Files\\Python35\\lib', 'C:\\Program Files\\Python35', 'C:\\Program Files\\Python35\\lib\\site-packages'] test |
对比发现,直接启动是把test.py文件,所在的目录放到了sys.path属性中。而模块启动是把你输入命令的目录(也就是当前路径),放到了sys.path属性中。
此外,我们也顺带测试了这两种启动方式中__name__值的不同。