Python包导入格式

发布时间:2022-04-12 09:49:14 人气:277 作者:多测师

  导入模块时除了使用模块名进行导入,还可以使用目录名进行导入。例如,在sys.path路径下,有一个dir1/dir2/mod.py模块,那么在任意位置处都可以使用下面这种方式导入这个模块。

  import dir1.dir2.mod

  from dir1.dir2.mod import XXX

  一个实际一点的示例,设置PYTHONPATH环境变量为d:\pypath,然后在此目录下创建以上目录和mod.py文件:

  set PYTHONPATH="D:\pypath"

  mkdir d:\pypath\dir1\dir2

  echo print("mod.py") >d:\pypath\dir1\dir2\mod.py

  echo x=3 >>d:\pypath\dir1\dir2\mod.py

  # 进入交互式python

  >>> import dir1.dir2.mod

  mod.py

  >>> dir1.dir2.mod.x

  3

  注1:在python3.3版本及更高版本是可以导入成功的,但是在python3.3之前的版本将失败,因为缺少__init__.py文件,稍后会解释该文件

  注2:顶级目录dir1必须位于sys.path列出的路径搜索列表下

Python包导入格式

  如果输出dir1和dir2,将会看到它们的是模块对象,且是名称空间。

  >>> import dir1.dir2.mod

  mod.py

  >>> dir1

  >>> dir1.dir2

  >>> dir1.dir2.mod

  这种模块+名称空间的形式就是包(严格地说是包的一种形式),也就是说dir1是包,dir2也是包,这种方式是包的导入形式。包主要用来组织它里面的模块。

  从上面的结果也可以看出,包也是模块,所以能使用模块的地方就能使用包。例如下面的代码,可以像导入模块一样直接导入包dir2,包和模块的区别在于它们的组织形式不一样,模块可能位于包内,仅此而已。

  import dir1.dir2

  from dir1 import dir2

  另外,导入dir1.dir2.mod时,它声明的模块变量名为dir1,而不是dir1.dir2.mod,但是导入的对象却包含了3个模块:dir1、dir1.dir2以及dir1.dir2.mod。如下:

  >>> dir()

  ['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'dir1']

  >>> for key in sys.modules:

  ... if key.startswith("dir1"):

  ... print(key,":",sys.modules[key])

  ...

  dir1 :

  dir1.dir2 :

  dir1.dir2.mod :

  以上内容为大家介绍了Python包导入格式,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注多测师。https://www.e70w.com/xwzx/


返回列表
在线客服
联系方式

热线电话

17727591462

上班时间

周一到周五

二维码
线