本文主要是介绍python包名相同的两个包,常规包和命名空间包谁的优先级更高?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题
项目开发中,基础资源作为Python第三方库开发,安装到docker镜像中供项目使用;但问题比较明显,基础资源包版本迭代会造成镜像版本过多,随后使用Git subtree工具进行基础资源管理。在主项目获取到子项目之后,发现主项目中的导包路径报错,随后引发思考,问题展示如下:
基础资源作为python第三方库进行开发管理,
使用Git subtree管理基础资源,
使用基础资源时,模块导入报错
名词解释
模块:一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句
包:包含模块的文件夹
常规包:包含 __init__.py 文件的包
命名空间包:不包含 __init__.py 文件的包
方案及演示
当两个包bar都为命名空间包时,
当span_2下的bar为常规包时,
结论
包名一样,常规包优先级高于命名空间包
加入__init__.py文件后,问题解决。
延伸
项目内的普通包和第三方包包名相同,都为常规包或者同为命名空间包时,项目内的包优先使用。
这篇关于python包名相同的两个包,常规包和命名空间包谁的优先级更高?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!