非常教程

Python参考手册

输入 | Importing

pkgutil

2.3版本的新功能。

源代码: Lib / pkgutil.py

该模块为导入系统提供实用程序,特别是软件包支持。

pkgutil.extend_path(path, name)

扩展组成包的模块的搜索路径。预期用途是将以下代码放入包中__init__.py

from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)

这将添加到软件包的__path__所有以该软件包sys.path命名的目录的子目录上。如果要将单个逻辑包的不同部分分配为多个目录,这非常有用。

它还会查找与名称参数匹配的*.pkg文件。该功能与文件类似(请参阅模块以获取更多信息),不同之处在于它不包含以特殊字符开头的行。一个文件在面值上是可信的:除了检查重复项之外,文件中找到的所有项都被添加到路径中,而不管它们是否存在于文件系统中。(这是一个功能。)**.pthsiteimport*.pkg*.pkg

如果输入路径不是列表(如冻结包的情况那样),它将保持不变。输入路径未被修改; 将返回一个扩展副本。项目只在最后附加到副本。

假定sys.path是一个序列。的项目sys.path不属于(Unicode或8位),参照现有的目录被忽略的字符串。sys.path当用作文件名时导致错误的Unicode项可能会导致此函数引发异常(符合os.path.isdir()行为)。

class pkgutil.ImpImporter(dirname=None)

PEP 302导入器,它包装了Python的“经典”导入算法。

如果dirname是一个字符串,则会创建一个PEP 302导入器来搜索该目录。如果dirnameNone,则会创建一个PEP 302导入器,用于搜索当前sys.path以及任何冻结或内置的模块。

请注意,ImpImporter目前不支持在展示位置上使用sys.meta_path

class pkgutil.ImpLoader(fullname, file, filename, etc)

PEP 302 Loader包装了Python的“经典”导入算法。

pkgutil.find_loader(fullname)

查找PEP 302 “装载”为对象的全名

如果fullname包含点,则路径必须是包含的包__path__None如果无法找到或导入模块,则返回。此功能使用iter_importers(),因此受到与特定于平台的特殊导入位置(如Windows注册表)相同的限制。

pkgutil.get_importer(path_item)

检索给定path_itemPEP 302导入

sys.path_importer_cache如果它是由路径钩子新创建的,则返回的导入器将被缓存。

如果没有进口商,则返回基本进口机械的包装。这个包装永远不会插入到导入器缓存中(None而是插入)。

如果需要重新扫描,sys.path_hooks则可以手动清除缓存(或部分缓存)。

pkgutil.get_loader(module_or_name)

module_or_name获取一个PEP 302 “加载器”对象。

如果模块或包装可以通过正常的进口机制进行访问,则返回该机械相关部件周围的包装。None如果无法找到或导入模块,则返回。如果已命名的模块尚未导入,则会导入其包含的包(如果有),以便建立包__path__

此功能使用iter_importers(),因此受到与特定于平台的特殊导入位置(如Windows注册表)相同的限制。

pkgutil.iter_importers(fullname='')

产量PEP 302个进口商为给定的模块名称。

如果全名中含有“”,进口商将包含全名包,否则会为进口商sys.meta_pathsys.path和Python的‘经典’的进口机器,按照这个顺序。如果指定的模块位于包中,则该包将作为调用此函数的副作用导入。

部分支持标准导入机制用于在其他位置查找文件的非PEP 302机制(例如Windows注册表),但会在后面 进行搜索sys.path。通常情况下,这些位置在之前 被搜索sys.path,以防止sys.path对它们进行投影。

为了在行为上产生明显的差异,必须有一个模块或软件包名称可以通过这两种sys.pathPEP 302文件系统机制之一访问。在这种情况下,仿真会找到前一个版本,而内置的导入机制会找到后者。

:以下类型的项目可以通过这种差异的影响imp.C_EXTENSIONimp.PY_SOURCEimp.PY_COMPILEDimp.PKG_DIRECTORY

pkgutil.iter_modules(path=None, prefix='')

路径(module_loader, name, ispkg)上的所有子模块的产量,或者,如果路径是,所有顶级模块都打开。Nonesys.path

路径应该是None要查找模块的路径或列表。

前缀是在输出上的每个模块名称的前面输出的字符串。

pkgutil.walk_packages(path=None, prefix='', onerror=None)

(module_loader, name, ispkg)所有模块在路径上递归产生,或者如果路径是None所有可访问的模块。

路径应该是None要查找模块的路径或列表。

前缀是在输出上的每个模块名称的前面输出的字符串。

请注意,此函数必须导入给定路径上的所有不是所有模块!),以便访问该属性以查找子模块。__path__

onerror是一个函数,如果在尝试导入程序包时发生任何异常,则会使用一个参数(正在导入的程序包的名称)调用它。如果未提供onerror函数,ImportError则会捕获并忽略这些函数,而传播所有其他异常,从而终止搜索。

例子:

# list all modules python can access
walk_packages()

# list all submodules of ctypes
walk_packages(ctypes.__path__, ctypes.__name__ + '.')

pkgutil.get_data(package, resource)

从包中获取资源。

这是PEP 302加载器get_data()API 的包装。所述参数应该是一个包的名称,在标准模块格式(foo.bar)。所述资源参数应该是在一个相对文件名的形式,使用/作为路径分隔。父目录名称..是不允许的,也不是根目录名称(以a开头/)。

该函数返回一个二进制字符串,它是指定资源的内容。

对于位于已经导入的文件系统中的软件包,这大致相当于:

d = os.path.dirname(sys.modules[package].__file__)
data = open(os.path.join(d, resource), 'rb').read()

如果包装不能被找到或装载,或者它使用不支持的PEP 302装载机get_data(),则None返回。

2.6版本中的新功能。

Python

Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人 Guido van Rossum 于1989年发明,第一个公开发行版发行于1991年。 Python 是纯粹的自由软件, 源代码和解释器 CPython 遵循 GPL 协议。Python 语法简洁清晰,特色之一是强制用空白符( white space )作为语句缩进。

主页 https://www.python.org/
源码 https://github.com/python/cpython
版本 2.7
发布版本 2.7.13

Python目录

1.内置常量 | Built-in Constants
2.内置例外 | Built-in Exceptions
3.内置函数 | Built-in Functions
4.内置类型 | Built-in Types
5.编译器 | Compiler
6.加密 | Cryptography
7.数据压缩 | Data Compression
8.数据持久性 | Data Persistence
9.数据类型 | Data Types
10.调试和分析 | Debugging & Profiling
11.开发工具 | Development Tools
12.文件和目录访问 | File & Directory Access
13.文件格式 | File Formats
14.构架 | Frameworks
15.输入 | Importing
16.输入/输出 | Input/ouput
17.国际化 | Internationalization
18.网络 | Internet
19.网络数据 | Internet Data
20.翻译 | Interpreters
21.语言 | Language
22.记录 | Logging
23.Mac OS
24.MS Windows
25.多媒体 | Multimedia
26.联网 | Networking
27.数字与数学 | Numeric & Mathematical
28.操作系统 | Operating System
29.可选操作系统 | Optional Operating System
30.限制执行 | Restricted Execution
31.运行 | Runtime
32.SGI IRIX
33.软件包装与分销 | Software Packaging & Distribution
34.字符串 | String
35.结构化标记 | Structured Markup
36.Tk
37.Unix
38.Python 简介
39.Python pass 语句
40.Python 循环嵌套
41.Python 运算符
42.Python log10() 函数
43.Python log() 函数
44.Python floor() 函数
45.Python fabs() 函数
46.Python exp() 函数
47.Python cmp() 函数
48.Python ceil() 函数
49.Python abs() 函数
50.Python Number(数字)
51.Python pow() 函数
52.Python modf() 函数
53.Python min() 函数
54.Python max() 函数
55.Python asin() 函数
56.Python acos() 函数
57.Python uniform() 函数
58.Python shuffle() 函数
59.Python seed() 函数
60.Python random() 函数
61.Python randrange() 函数
62.Python choice() 函数
63.Python sqrt() 函数
64.Python round() 函数
65.Python radians() 函数
66.Python degrees() 函数
67.Python tan() 函数
68.Python sin() 函数
69.Python hypot() 函数
70.Python cos() 函数
71.Python atan2() 函数
72.Python atan() 函数
73.Python 元组
74.Python 列表(List)
75.Python 字符串
76.Python 字典(Dictionary)
77.Python 日期和时间
78.Python 函数
79.Python 模块
80.Python capitalize()方法
81.Python center()方法
82.Python count() 方法
83.Python expandtabs()方法
84.Python endswith()方法
85.Python encode()方法
86.Python decode()方法
87.Python find()方法
88.Python index()方法
89.Python 异常处理
90.Python isspace()方法
91.Python isnumeric()方法
92.Python islower()方法
93.Python isdigit()方法
94.Python isalpha()方法
95.Python isalnum()方法
96.Python isupper()方法
97.Python istitle()方法
98.Python min()方法
99.Python max()方法
100.Python maketrans()方法