Glossário#

Distribuição Binária#

Um tipo específico de Distribuição Construída que contém extensões compiladas.

Backend de construção#

Uma biblioteca que pega uma árvore de fontes ou distribuição fonte e constrói uma distribuição de código-fonte ou wheel a partir dela. A construção é delegada ao backend por um frontend. Todos os backends oferecem uma interface padronizada.

Exemplos de backends de construção são flit-core do flit, hatchling do hatch, Maturin, meson-python, scikit-build-core e Setuptools.

Frontend de construção#

Uma ferramenta que os usuários podem executar que pega árvores de fontes arbitrárias ou distribuições fonte e constrói distribuições fontes ou wheels a partir delas. A construção real é delegada ao backend de construção de cada árvore de fontes.

Exemplos de frontends de construção são pip e construir.

Distribuição Construída#

Um formato de Distribuição contendo arquivos e metadados que só precisam ser movidos para o local correto no sistema de destino, para serem instalados. Wheel é esse formato, enquanto o Distribuição Fonte do distutil não é, pois requer uma etapa de construção antes de poder ser instalado. Este formato não implica que os arquivos Python tenham que ser pré-compilados (Wheel intencionalmente não inclui arquivos Python compilados).

Pacote de Distribuição#

Um arquivo com versão que contém pacotes Python, módulos, e outros arquivos de recursos que são usados para distribuir um Release (lançamento). O arquivo é o que um usuário final irá baixar da Internet e instalar.

Um pacote de distribuição é mais comumente referido com as palavras “pacote” ou “distribuição”, mas este guia pode usar o termo expandido quando mais clareza for necessária para evitar confusão com um Pacote de Importação (que também é comumente chamado de “pacote”) ou outro tipo de distribuição (por exemplo, uma distribuição Linux ou a distribuição da linguagem Python), que são frequentemente referidos com o único termo “distribuição”. Veja Pacote de distribuição vs. pacote de importação para uma explicação das diferenças.

Egg#

Um formato Distribuição Construída introduzido por Setuptools, que está sendo substituído por Wheel. Para obter detalhes, consulte The Internal Structure of Python Eggs e Python Eggs

Módulo de Extensão#

Um Módulo escrito na linguagem de baixo nível da implementação Python: C/C++ para Python, Java para Jython. Normalmente contido em um único arquivo pré-compilado carregável dinamicamente, por exemplo, um arquivo de objeto compartilhado (.so) para extensões Python no Unix, uma DLL (dada a extensão .pyd) para extensões Python no Windows ou um arquivo de classe Java para extensões Jython.

Known Good Set (KGS)#

Um conjunto de distribuições em versões especificadas que são compatíveis entre si. Normalmente, será executado um conjunto de testes que passa em todos os testes antes que um conjunto específico de pacotes seja declarado como um conjunto sabidamente bom (known good set). Este termo é comumente usado por frameworks e kits de ferramentas que são compostos de várias distribuições individuais.

Pacote de Importação#

Um módulo Python que pode conter outros módulos ou recursivamente, outros pacotes.

Um pacote de importação é mais comumente referido com a palavra “pacote”, mas este guia usará o termo expandido quando mais clareza for necessária para evitar confusão com um Pacote de Distribuição que também é comumente chamado de “pacote” . Veja Pacote de distribuição vs. pacote de importação para uma explicação das diferenças.

Módulo#

A unidade básica de reutilização de código em Python, existindo em um dos dois tipos: Módulo Puro ou Módulo de Extensão.

Índice de Pacotes#

Um repositório de distribuições com uma interface web para automatizar descoberta e consumo de pacotes.

Índice Por Projeto#

Um Índice de Pacotes privado ou outro não canônico indicado por um Projeto específico como o índice preferido ou necessário para resolver dependências desse projeto.

Projeto#

Uma biblioteca, estrutura, script, plugin, aplicação ou coleção de dados ou outros recursos, ou alguma combinação dos mesmos que se destina a ser empacotado em uma Distribuição.

Como a maioria dos projetos cria Distribuições usando build-system da PEP 518, distutils ou Setuptools, outra maneira prática de definir projetos atualmente é algo que contém um arquivo pyproject.toml, setup.py ou setup.cfg na raiz do diretório fonte do projeto.

Projetos Python devem ter nomes únicos, que são registrados no PyPI. Cada projeto conterá então um ou mais Lançamentos, e cada lançamento pode incluir uma ou mais distribuições.

Observe que há uma forte convenção para dar o nome do projeto ao pacote que é importado para executar esse projeto. No entanto, isso não é obrigatório. É possível instalar uma distribuição do projeto “foo” e fazer com que ele forneça um pacote importável apenas como “bar”.

Módulo Puro#

Um Módulo escrito em Python e contido em um único arquivo .py (e possivelmente arquivos .pyc e/ou .pyo associados).

Python Packaging Authority (PyPA)#

PyPA é um grupo de trabalho que mantém muitos dos projetos relevantes em pacotes Python. Eles mantêm um site em pypa.io, hospedam projetos no GitHub e Bitbucket, e discutem questões na lista de discussão distutils-sig e o fórum Discourse do Python.

Python Package Index (PyPI)#

PyPI é o Índice de Pacotes padrão para a comunidade Python. Está aberto a todos os desenvolvedores Python para consumir e distribuir suas distribuições.

pypi.org#

pypi.org é o nome de domínio do Python Package Index (PyPI). Ele substituiu o nome de domínio do índice legado, pypi.python.org, em 2017. Ele é tornado possível pelo Warehouse.

pyproject.toml#

O arquivo de especificação agnóstica de ferramenta para Projetos. Definido na PEP 518.

Lançamento#

Um snapshot de um Projeto em um determinado ponto no tempo, denotado por um identificador de versão.

Fazer um lançamento pode implicar na publicação de várias Distribuições. Por exemplo, se a versão 1.0 de um projeto foi lançada, ele pode estar disponível em um formato de distribuição fonte e um formato de distribuição de instalador do Windows.

Requisito#

Uma especificação para um pacote a ser instalado. pip, o instalador recomendado do PYPA, permite várias formas de especificação que podem ser consideradas um “requisito”. Para obter mais informações, consulte a referência de pip install.

Especificador de Requisitos#

Um formato usado por pip para instalar pacotes de um Índice de Pacotes. Para um diagrama EBNF do formato, veja Especificadores de dependência. Por exemplo, “foo>=1.3” é um especificador de requisitos, onde “foo” é o nome do projeto e a parte “>=1.3” é o Especificador de Versão

Arquivo de Requisitos#

Um arquivo contendo uma lista de Requisitos que podem ser instalados usando pip. Para mais informações, veja a documentação pip em Requirements Files.

setup.py#
setup.cfg#

Os arquivos de especificação do projeto para distutils e Setuptools. Veja também pyproject.toml.

Arquivo Fonte#

Um arquivo contendo o código-fonte bruto para um Lançamento, antes da criação de uma Distribuição Fonte ou Distribuição Construída.

Distribuição Fonte (ou “sdist”)#

Um formato de distribuição (geralmente gerado usando python -m build sdist) que fornece metadados e os arquivos-fonte essenciais necessários para a instalação por uma ferramenta como pip, ou para gerar uma Distribuição Construída.

Pacote de Sistemas#

Um pacote fornecido em um formato nativo para o sistema operacional, por exemplo, um arquivo rpm ou dpkg.

Especificador de Versão#

O componente de versão de um Especificador de Requisitos. Por exemplo, a parte “>=1.3” de “foo>=1.3”. Leia a especificação de especificador de versão para a especificação completa dos especificadores que o empacotamento do Python oferece suporte atualmente. O suporte para esta especificação foi implementado no Setuptools v8.0 e no pip v6.0.

Ambiente Virtual#

Um ambiente Python isolado que permite que os pacotes sejam instalados para uso por uma aplicação específica, em vez de serem instalados em todo o sistema. Para obter mais informações, consulte a seção sobre Criando ambientes virtuais.

Wheel#

Um formato de Distribuição Construída introduzido por um especificação de padrão oficial, que se destina a substituir o formato Egg. O Wheel é atualmente suportado pelo pip.

Conjunto de Trabalho#

Uma coleção de distribuições disponíveis para importação. Estas são as distribuições que estão na variável sys.path. No máximo, uma Distribuição para um projeto é possível em um conjunto de trabalho.