两种方式启动:
- python xxx.py -----直接运行的方式启动(此时脚本__name__为"__main__")
- python -m xxx.py ------以模块的方式启动(此时脚本的__name__属性值依然不再是"__main__"而是"xxx")
不同的加载py文件的方式,主要是影响——sys.path 这个属性。sys.path 就相当于liunx中的PATH
列表里的''表示当前目录,命令执行的目录
直接启动是把run.py文件,所在的目录放到了sys.path属性中。
模块启动是把你输入命令的目录(也就是当前路径),放到了sys.path属性中
# 目录结构如下
package/
__init__.py
mod1.py
package2/
__init__.py
run.py
文件内容如下
# run.py 内容如下
import sys
from package import mod1
print(sys.path)
结果如下
# 直接启动(失败)
➜ test_import_project git:(master) ✗ python package2/run.py
Traceback (most recent call last):
File "package2/run.py