当前位置:   article > 正文

第十九章:模块和包-importlib:Python的导入机制-模块类型_importlib.machinery

importlib.machinery

19.1.2 模块类型
Python支持多种类型的模块。打开模块并将其增加到命名空间时,每种类型的模块都需要它自己的处理,另外不同平台对格式的支持也有所不同。例如,在Microsoft Windows下,共享库从扩展名为.dll或.pyd的文件加载,而不是.so。使用解释器的调试(debug)构建版本而不是普通的发行(release)构建版本时,C模块的扩展包也可能改变,因为这些扩展包在编译时可能还包含调试信息。如果一个C扩展库或其他模块不能按预想的那样正常加载,则可以使用importlib.machinery中定义的常量来查找当前平台支持的类型,以及相应的加载参数。

import importlib.machinery

SUFFIXES = [
    ('Source:',importlib.machinery.SOURCE_SUFFIXES),
    ('Debug:',
     importlib.machinery.DEBUG_BYTECODE_SUFFIXES),
    ('Optimized:',
     importlib.machinery.OPTIMIZED_BYTECODE_SUFFIXES),
    ('Bytecode:',importlib.machinery.BYTECODE_SUFFIXES),
    ('Extension:',importlib.machinery.EXTENSION_SUFFIXES),
    ]


def main():
    tmpl = '{:<10} {}'
    for name,value in SUFFIXES:
        print(tmpl.format(name,value))


if __name__ == '__main__':
    main()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

返回值是一个元组序列,其中包含文件扩展名,打开文件(包含有模块)所用的模式,以及一个类型码(来自模块中定义的一个常量)。下面的表并不完备,因为有些可导入的模块或包类型并不对应单个文件。
在这里插入图片描述

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号