关于from . import 的一个问题

绝对导入: 从sys.path模块搜索路径列表中开始找(第一个元素是当前执行程序所在目录)

相对导入:从from import语句所在的文件开始找 .代表当前文件所在目录目录,..代表当前文件所在目录的上一级目录

ps:相对路径导入依赖于__name__变量,根据它的值去寻找平级或者上级目录或文件,

模块被导入后,python解释器会为该模块创建一个名为__name__的变量,并将该模块所在目录的绝对路径存储于此变量中,

而.py文件运行时,python会为该程序创建一个名为__name__的变量,并且赋值为字符串“__main__”,所以在当前执行程序不能使用相对导入,

from . import name 会报错提示 cannot import name ‘name'

from .. import name 会报错提示 attempted relative import beyond top-level package

猜你喜欢

转载自www.cnblogs.com/Clownly/p/11515402.html