python中的模块引入问题特别乱,看了好多网上的介绍也是杂乱无张的.今天自己测试了一下,总结如下.如果有不对的不周全的地方.希望提醒.
假设我的文件目录如下:
-----module 总目录
-------package1 子目录
----__init__.py
----basicclass.py
----basicdef.py
----firchildMain.py
------package2 子目录
----__init__.py
----secchildMain.py
------main.py 父目录下main文件
basicclass.py:
class Basic:
def test(self):
print "this is basic.Basic.test() method" 一个简单的class 中包含一个def
basicdef.py:
__all__ = [
'myfirDef',
]
def myfirDef():
print "this is my first def()"
def mysecDef():
print "this is my second def()" 只包含两个基本方法的文件
1/ 首先先看同一目录下的引用 操作
firchildMain文件要访问 basicdef.py文件中的方法:
三中方法 1:import basicdef basicdef.myfirDef() basicdef.mysecDef() 即先导入模块 然后通过模块名称访问方法
2:from basicdef import myfirDef 直接调用myfirDef()方法 即直接导入模块中的方法
3: 用 from basicdef import * 这种导入形式 需要注意 只会导入basicdef中 __all__中声明的myfirDef()方法
firchildMain文件访问类文件basicclass.py中的Basic类:
from basic import Basic
temp = Basic()
temp.test() 即 通过模块导入类文件 通过初始化类来访问类中的方法
2/其次看在父目录下的Main.py文件如何访问package1 下的两个文件:
from package1.basicclass import Basic
from package1 import basicdef
注意这种访问形式必须在package1中加入__init__文件 以使package1成为一个模块 使其他模块对其引用.当然如果是第一种情况,同一个目录下的问家相互引用则不需要此文件.
3/最后看最麻烦的同级目录下的访问:即package2中的secchildMain.py文件访问package1中的文件的方法定义
需要引入sys模块 添加路径
import sys
sys.path.append('/home/pythonexe/module/package1')
from basic import Basic
import basicdef
append 是自己本机的目录路径 你可以使用print sys.path 打印下自己的路径来进行添加.