import package
# Python2导入包,若包里没有__init__.py文件会报错
# Python3导入包,若包里没有__init__.py文件不会报错
‘‘‘
test_dir/
-pkg1
-__init__.py
-p1_m1.py
-f1()
-p1_m2.py
-f2()
-pkg2
-__init__.py
-p2_m1.py
-f3()
-p2_m2.py
-f4()
-demo.py
‘‘‘
方式一:
import pkg1.p1_m1
pkg1.p1_m1.f1()
# 使用过于啰嗦,可以起别名
import pkg1.p1_m1 as m1
m1.f1()
# 直接从包内导入文件
from pkg1 import p1_m1
p1_m1.f1()
# 也可直接导入f1
from pkg1.p1_m1 import f1
f1()
from ...impot 的from 后面可以带多个点. 点的左侧只能是包的名字。
from...import 的import后面只能接py文件或文件内的方法
不能带点.
from pkg1 import p1_m1.f1
p1_m1.f1()
# 语法错误
绝对导入:
以包作为顶级目录来导入
# pkg1/__init__.py文件内
from pkg1.p1_m1 import f1
from pkg1.p1_m2 import f2
from pkg2.p2_m1 import f3
点的左侧必须是包
相对导入
# pkg1/__init__.py文件内
from .
在__init.py__内使用from ... import ... 导入包内的其他模块时,无法直接在init.py文件内运行,只能被其他文件用来导入
在init.py文件内不能使用import p1_m1导入包内的其他文件,这样虽然可以直接在init.py文件内运行导入的模块,但当包被其他文件导入时,由于sys.path环境变量原因,包无法使用。
原文:https://www.cnblogs.com/ChiRou/p/13471890.html