pkgutil — Utilitário de extensão de pacote¶
Código-fonte: Lib/pkgutil.py
Este módulo fornece utilitários para o sistema de importação, em particular suporte a pacotes.
- class pkgutil.ModuleInfo(module_finder, name, ispkg)¶
- Um namedtuple que contém um breve resumo das informações de um módulo. - Adicionado na versão 3.6. 
- pkgutil.extend_path(path, name)¶
- Estende o caminho de pesquisa para os módulos que compõem um pacote. O uso pretendido é colocar o seguinte código no - __init__.pyde um pacote:- from pkgutil import extend_path __path__ = extend_path(__path__, __name__) - Para cada diretório em - sys.pathque tenha um subdiretório que corresponda ao nome do pacote, adiciona o subdiretório ao- __path__do pacote. Isto é útil se quisermos distribuir diferentes partes de um único pacote lógico como múltiplos diretórios.- Também procura por arquivos - *.pkgque começam onde- *corresponde ao argumento name. Este recurso é semelhante aos arquivos- *.pth(consulte o módulo- sitepara mais informações), exceto que não considera casos especiais para linhas que começam com- import. Um arquivo- *.pkgé confiável por natureza: além de pular linhas em branco e ignorar comentários, todas as entradas encontradas em um arquivo- *.pkgsão adicionadas ao caminho, independentemente de existirem ou não no sistema de arquivos (este é um recurso).- Se o caminho de entrada não for uma lista (como é o caso de pacotes congelados), ele será retornado inalterado. O caminho de entrada não é modificado; uma cópia estendida é retornada. Os itens são anexados à cópia apenas no final. - Presume-se que - sys.pathseja uma sequência. Itens de- sys.pathque não sejam strings referentes a diretórios existentes são ignorados. Itens Unicode em- sys.pathque causam erros quando usados como nomes de arquivo podem fazer com que esta função levante uma exceção (em linha com o comportamento de- os.path.isdir()).
- pkgutil.get_importer(path_item)¶
- Recupera um localizador para o path_item fornecido. - O localizador retornado é armazenado em cache em - sys.path_importer_cachese ele foi criado recentemente por um gancho de caminho.- O cache (ou parte dele) pode ser limpo manualmente se uma nova varredura de - sys.path_hooksfor necessária.
- pkgutil.iter_importers(fullname='')¶
- Produz objetos localizador para o nome do módulo fornecido. - Se fullname contiver - '.', os localizadores serão para o pacote que contém fullname, caso contrário, serão todos os localizadores de nível superior registrados (ou seja, aqueles em- sys.meta_pathe- sys.path_hooks).- Se o módulo nomeado estiver em um pacote, esse pacote será importado como um efeito colateral da invocação desta função. - Se nenhum nome de módulo for especificado, todos os localizadores de nível superior serão produzidos. 
- pkgutil.iter_modules(path=None, prefix='')¶
- Levanta - ModuleInfopara todos os submódulos em path ou, se path for- None, todos os módulos de nível superior em- sys.path.- path deve ser - Noneou uma lista de caminhos para procurar módulos.- prefix é uma string a ser exibida na frente de cada nome de módulo na saída. - Nota - Funciona apenas para um localizador que define um método - iter_modules(). Esta interface não é padrão, portanto, o módulo também fornece implementações para- importlib.machinery.FileFindere- zipimport.zipimporter.
- pkgutil.walk_packages(path=None, prefix='', onerror=None)¶
- Levanta - ModuleInfopara todos os módulos recursivamente em path, ou, se path for- None, todos os módulos acessíveis.- path deve ser - Noneou uma lista de caminhos para procurar módulos.- prefix é uma string a ser exibida na frente de cada nome de módulo na saída. - Observe que esta função deve importar todos os pacotes (não todos os módulos!) no caminho path fornecido, para acessar o atributo - __path__para encontrar submódulos.- onerror é uma função que é chamada com um argumento (o nome do pacote que estava sendo importado) caso ocorra alguma exceção durante a tentativa de importação de um pacote. Se nenhuma função onerror for fornecida, - ImportErrors são capturadas e ignoradas, enquanto todas as outras exceções são propagadas, encerrando a busca.- Exemplos: - # lista todos os módulos que o python consegue acessars walk_packages() # lista todos os submódulos de ctypes walk_packages(ctypes.__path__, ctypes.__name__ + '.') - Nota - Funciona apenas para um localizador que define um método - iter_modules(). Esta interface não é padrão, portanto, o módulo também fornece implementações para- importlib.machinery.FileFindere- zipimport.zipimporter.
- pkgutil.get_data(package, resource)¶
- Obtém um recurso de um pacote. - Este é um invólucro para a API - get_datado carregador. O argumento package deve ser o nome de um pacote, no formato de módulo padrão (- foo.bar). O argumento resource deve estar no formato de um nome de arquivo relativo, usando- /como separador de caminho. O nome do diretório pai- ..não é permitido, nem um nome raiz (começando com- /).- A função retorna uma string binária que é o conteúdo do recurso especificado. - Para pacotes localizados no sistema de arquivos, que já foram importados, isso é o equivalente aproximado de: - d = os.path.dirname(sys.modules[package].__file__) data = open(os.path.join(d, resource), 'rb').read() - Se o pacote não puder ser localizado ou carregado, ou se usar um carregador que não oferece suporte a - get_data,- Noneserá retornado. Em particular, o carregador para pacotes de espaço de nomes não oferece suporte a- get_data.
- pkgutil.resolve_name(name)¶
- Resolve um nome a um objeto. - Essa funcionalidade é usada em vários lugares na biblioteca padrão (veja bpo-12915) - e funcionalidades equivalentes também estão amplamente utilizadas em pacotes de terceiros, como setuptools, Django e Pyramid. - Espera-se que name seja uma string em um dos seguintes formatos, onde W é uma abreviação para um identificador Python válido e ponto representa um ponto literal nessas pseudo-regexes: - W(.W)*
- W(.W)*:(W(.W)*)?
 - A primeira forma destina-se apenas à retrocompatibilidade. Ela presume que parte do nome pontilhado seja um pacote e o restante seja um objeto em algum lugar dentro desse pacote, possivelmente aninhado dentro de outros objetos. Como o ponto onde o pacote termina e a hierarquia de objetos começa não pode ser inferido por inspeção, tentativas repetidas de importação devem ser feitas com esta forma. - Na segunda forma, o chamador deixa claro o ponto de divisão por meio de um caractere de dois pontos: o nome pontilhado à esquerda do caractere de dois pontos representa um pacote a ser importado, e o nome pontilhado à direita representa a hierarquia de objetos dentro desse pacote. Apenas uma importação é necessária nesta forma. Se terminar com caractere de dois pontos, um objeto de módulo será retornado. - A função retornará um objeto (que pode ser um módulo) ou levantará uma das seguintes exceções: - ValueError– se name não estiver em um formato reconhecido.- ImportError– se uma importação falhou quando não deveria.- AttributeError– Se ocorrer uma falha ao percorrer a hierarquia de objetos dentro do pacote importado para chegar ao objeto desejado.- Adicionado na versão 3.9.