我们知道,定义在环境变量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__ 变量;该变量包含执行这样的语句时应该导入的模块的名字;它由一个模块名字符串列表组成。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐