Pacote de distribuição vs. pacote de importação#

Alguns conceitos diferentes são comumente referidos pela palavra “pacote”. Esta página esclarece as diferenças entre dois significados distintos, mas relacionados no empacotamento do Python , “pacote de distribuição” e “pacote de importação”.

O que é um pacote de distribuição?#

Um pacote de distribuição é um software que você pode instalar. Na maioria das vezes, isso é sinônimo de “projeto”. Quando você digita pip install pkg, ou quando você escreve dependencies = ["pkg"] em seu pyproject.toml, pkg é o nome de um pacote de distribuição. Quando você pesquisa ou navega no PyPI, a fonte centralizada mais conhecida para instalar Python bibliotecas e ferramentas, o que você vê é uma lista de pacotes de distribuição. Alternativamente, o termo “pacote de distribuição” pode ser usado para se referir a um arquivo específico que contém uma determinada versão de um projeto.

Note que no mundo Linux, um “pacote de distribuição”, mais comumente abreviado como “pacote de distro” (em inglês, distro package) ou apenas “pacote”, é algo fornecido pelo gerenciador de pacotes do sistema da “distribuição Linux <distro>`_, que é um significado diferente.

O que é um pacote de importação?#

Um pacote de importação é um módulo Python. Assim, quando você escreve import pkg ou from pkg import func em seu código Python, pkg é o nome de um pacote de importação. Mais precisamente, os pacotes de importação são módulos especiais Python que podem conter submódulos. Por exemplo, o pacote numpy contém módulos como numpy.linalg e numpy.fft. Normalmente, um pacote de importação é um diretório no sistema de arquivos, contendo módulos como arquivos .py e subpacotes como subdiretórios.

Você pode usar um pacote de importação assim que tiver instalado um pacote de distribuição que o fornece.

Qual a comparação de nomes de pacotes de distribuição e de nomes de pacotes de importação?#

Os pacotes de importação devem ter identificadores válidos do Python como seu nome (as regras exatas são encontradas na documentação do Python) [1]. Em particular, eles usam sublinhado _ como separador de palavras e eles são sensíveis a casos.

Por outro lado, os pacotes de distribuição podem usar hífenes - ou sublinhados _. Eles também podem conter pontos ., que às vezes é usado para empacotar um subpacote de um pacote de espaço de nomes. Para a maioria dos fins, eles não diferenciam letras maiúsculas de minúsculas nem - de _. Por exemplo, pip install Awesome_Package é o mesmo que pip install awesome-package (as regras precisas são dadas na especificação de normalização de nome).