<span style="font-size:18px;">本文解析 python中模块 包的使用</span>
目录结构如下:
其中moduleA.py 和 sub/moduleB.py 是两个模块,useModule.py使用了moduleA 和 moduleB
图1.代码的目录结构
模块的代码:
moduleA.py
<span style="font-size:18px;">#coding:utf-8
def funcA_moduleA():
print('funcA in moduleA')
def funcB_moduleA():
print('funcB in moduleA')
class classA_moduleA:
def __init__(self):
print('classA in moduleA init')
if __name__ == "__main__":
funcA_moduleA()
funcB_moduleA()
test = classA_moduleA()</span>
moduleB.py moduleB在sub目录下
<span style="font-size:18px;">#coding:utf-8
def funcA_moduleB():
print('funcA in moduleB')
def funcB_moduleB():
print('funcB in moduleB')
class classA_moduleB:
def __init__(self):
print('classA in moduleB')
if __name__ == "__main__":
funcA_moduleB()
funcB_moduleB()
test = classA_moduleB()</span>
在useModule.py中使用这两个模块的方法有两种:
1.同级的目录下,可以直接import your_module,不在当前目录下的可以把模块所在的目录添加到sys.path
2.都使用import your_module ,对于不在同级目录下的模块,可以把该模块所在的文件夹当成包来处理
具体操作:
方法1:
useModule.py
#coding:utf-8
#------------------use moduleA--------------------
import moduleA
moduleA.funcA_moduleA()
moduleA.funcB_moduleA()
moduleA.classA_moduleA()
#-----------------------end-----------------------
#------------------use moduleB--------------------
import sys
import os
#把 /sub加到sys.path中去
current_work_path = os.path.dirname(os.path.abspath(sys.argv[0]))
moduleB_path = os.path.join(current_work_path,'sub')
sys.path.append(moduleB_path)
#可以直接把sub路径下的包导入
import moduleB
moduleB.funcA_moduleB()
moduleB.funcB_moduleB()
moduleB.classA_moduleB()
#-----------------------end-----------------------
方法2:
在sub下新建一个__init__.py的文件,内容可以为空,使sub成为一个包:
useModule.py
#coding:utf-8
#------------------use moduleA--------------------
import moduleA
moduleA.funcA_moduleA()
moduleA.funcB_moduleA()
moduleA.classA_moduleA()
#-----------------------end-----------------------
#------------------use moduleB--------------------
import sub
from sub import moduleB
moduleB.funcA_moduleB()
moduleB.funcB_moduleB()
moduleB.classA_moduleB()
#-----------------------end-----------------------
相关内容: