from pack1.pack2.pack3 import 模块名
模块.变量/函数名
这种方式更加常用
再按照方式一的方式来导入文件
init.py文件中pack导入包的路径:
- 使用绝对路径导入:from pack1 import pack2-->from pack1.pack2 import pack3,
每一级的导入都必须是绝对路径,这种方式在包的位置不改变的情况下是适用的,但是如果包的位置发生改变就会报错。- 使用相对路径导入:在每一级的__init__.py文件中写入from . import 下一级的pack/模块名,这样可以有效的避免绝对路径的问题。
需要特别注意的是:使用了相对路径导入的文件只能被当做模块来使用,不能被当作脚本文件来执行,如果到做脚本文件来执行程序会报错。
复杂的导入适用于整个包文件的开发,这个包给其他开发者使用的情况,日常的练习中直接导入方式就可以满足需求。
如果是直接导入一个包,相当于直接执行了包下边的__init__.py文件,并不会把包下边的其他包和py文件导入到内存中;
如果希望直接导入包后下边的包和其他的py文件都能直接通过包来导入,那么需要在__init__.py文件中去自定义处理。
原文:https://www.cnblogs.com/ddzc/p/12293814.html