咱们知道,定义在环境变量PYTHONPATH里是能够直接用import导入的。下面咱们来操做如何从非pythonpath目录导入第三方包或者本身定义的包。python
假定咱们的包有以下的目录结构:person 是最顶层的包,man、woman、child是子包
shell
person\ __init__.py person.py man\ __init__.py goodman.py child\ __init__.py lovelychild.py woman\ __init__.py goodwoman.py
首先,咱们把包所在目录(c:\testpackage)加入到sys.path路径里app
>>> import sys >>> sys.path.append("c:\\testpackage")
注意:路径分隔符必定要写成"\\"的spa
一、用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
二、用from * import *方式导入包code
>>> 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__ 变量;该变量包含执行这样的语句时应该导入的模块的名字;它由一个模块名字符串列表组成。it