被python的import引用折腾了两天.
记录一下结论:
f.py
如果是引用同级目录的模块,py2直接import name.py3需要from . import
如果是引用下级目录的模块 from dir import name
不管是直接执行,还是python -m 执行都是一样的
如果要引用上级目录或者平级目录的模块,有2个办法
1是修改sys.path, append上级/平级目录的绝对目录(py2可以,py3不行了)
2,是在上级的上级, 可以通过-m d1.d2.f 或者from d1.d2 import f方式调用, 这样就可以from .. import name
因为相对引用不可以超过包的顶层.所以-m d2.f也是不行的.