1、Python 相对导入与绝对导入
这两个概念是相对于包内导入而言的。包内导入即是包内的模块导入包内部的模块。
2、python中import的搜索路径
- 当前文件夹下
- 环境变量PYTHONPAHT中
- sys.path中
3、python中的import
- 导入当前模块同级别的模块
- 导入当前模块同级别包中的模块
- 不能导入具体的【变量、函数、类型】
|import导入
|sub_package
|__init__.py
|tools.py
|__init__.py
|tools.py
|main.py
可以在main.py模块中
import tools #导入当前模块同级别的模块
import sub_package.tools #导入当前模块同级别包中的模块
4、相对导入
from_import相对导入
|__init__.py
|tools.py
|def sum()
|msg = "变量"
|main.py
'''
相对路径引入【相对:相对的是当前文件路径;参照物:参照父级文件夹】
'''
#1、相对引入模块
from . import tools
print(tools.msg)
#直接运行会报错,
#因为此时main文件是入口文件(顶层文件)只有一个,所以找不到tools模块
'''
ImportError: cannot import name 'tools'
'''
#正确方式
#命令行使用python -m from_import相对导入.main,找到父级包做参照物,可以导入
#2、相对引入,直接引入具体函数、变量、类...
from .tools import sum
sum(1,2)
from .tools import msg
print(msg)
5、绝对导入
|from_import绝对导入
|sub_package
|__init__.py
|tools.py
|msg = "变量"
|__init__.py
|main.py
#通过绝对导入
from sub_package import tools
from sub_package.tools import msg
print(tools.msg)
print(msg)
#通过 包.模块 直接引入【变量、函数、类】