- 目录结构如下
1.如果想在bin.py中导入all/m.py文件
bin.py是主执行文件,所以执行时python只会把他的目录binDir/加入到环境变量sys.path中,导入是否成功只能看被导入的包路径是否在binDir/下,显然是找不到all/m.py的,要想找到m.p y,必须要把all的目录“模块&包&导入”加入到sys.path
# bin.py
import os, sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
# 然后再导入:注意使用from XX.sd import XX时,把我一个原则,from的.左边必须是包,import的XX可以是文件,类,变量
from all import m
2.在第一步的基础上如果m.py中又有导入import cal的操作,还是会报错,找不到cal模块
原因:from all import m时会加载并执行m.py中的顶层代码,即会把import cal加载到主执行文件bin.py执行,虽然第一步把“模块&包&导入”加入到了sys.path环境变量中了,但是也不能这样直接导入,在m.py文件中将导入方式修改成在主执行文件中可见的方式:from all import cal即可解决
3.动态导入
(1)格式
# 格式:导入字符串格式的模块module1