我们知道,定义在环境变量PYTHONPATH里是可以直接用import导入的。下面我们来操作如何从非pythonpath目录导入第三方包或者自己定义的包。
假定我们的包有如下的目录结构:person 是最顶层的包,man、woman、child是子包
person\ __init__.py person.py man\ __init__.py goodman.py child\ __init__.py lovelychild.py woman\ __init__.py goodwoman.py
首先,我们把包所在目录(c:\testpackage)加入到sys.path路径里
>>> import sys >>> sys.path.append("c:\\testpackage")
注意:路径分隔符一定要写成”\\”的
1、用import方式 导入包,此种方式必须写全包的路径
>>> import person.person >>> person.person.printperson() person >>> import person.man.goodman >>> person.man.goodman.printman() man >>> import person.woman.goodwoman >>> person.woman.goodwoman.printwoman() woman >>> import person.man.child.lovelychild >>> person.man.child.lovelychild.printchild() child
2、用from * import *方式导入包
>>> from person import person >>> person.printperson() person >>> from person.man import goodman >>> goodman.printman() man >>> from person.man.child import lovelychild >>> lovelychild.printchild() child >>> from person.woman import goodwoman >>> goodwoman.printwoman() woman
也可以用以下方式:
>>> from person import * >>> person.printperson() person >>> from person.man import * >>> goodman.printman() man >>> from person.man.child import * >>> lovelychild.printchild() child
注意:这样的语句会导入哪些文件取决于操作系统的文件系统;所以我们在__init__.py 中加入 __all__ 变量;该变量包含执行这样的语句时应该导入的模块的名字;它由一个模块名字符串列表组成。