Aprenda a criar, distribuir e usar pacotes em Python com a ajuda deste guia.
Imagine a difícil tarefa de desenvolver um aplicativo abrangente confinado a um único arquivo Python. Embora tecnicamente viável, vai contra os princípios básicos de construção de software eficiente, sustentável e reutilizável. Por tais razões, pacotes e módulos são essenciais para a construção e desenvolvimento de software.
O que é um pacote?
Em Python, um pacote fornece uma maneira de organizar módulos e recursos logicamente relacionados. É um diretório que contém vários módulos Python, subpacotes e outros recursos.
Os pacotes fornecem uma estrutura hierárquica, permitindo que você organize o código do seu projeto em diferentes níveis de abstração.
Diferença entre pacotes e módulos
Embora você possa usar ambos os pacotes e módulos para organizar o código, existem diferenças entre eles:
- Módulo: Um módulo é um arquivo que contém o código Python. Ele define funções, classes, variáveis e outros objetos que você pode importar e usar em seu código.
- Pacote: Um pacote é uma coleção de um ou mais módulos e também pode incluir subpacotes.
Como criar um pacote em Python
Para criar um pacote, siga estas etapas definidas.
Etapa 1: criar um diretório de projeto
Comece criando um diretório de projeto.
study_bud/
Etapa 2: criar um diretório de pacotes
Dentro do diretório do seu projeto, crie outro diretório que servirá como diretório do pacote. Dê a ele um nome significativo que represente a finalidade ou a funcionalidade do pacote. O diretório do pacote conterá os módulos e subpacotes relacionados ao seu pacote.
study_bud/
math_tool/
Etapa 3: definir o arquivo __init__.py do pacote
No diretório do pacote, crie um __init__.py arquivo. A presença de __init__.py arquivo é o que torna o diretório um pacote em Python.
Se precisar inicializar um código sempre que usar o pacote, inclua-o no __init__.py arquivo caso contrário, está sempre vazio.
study_bud/
math_tool/
__init__.py
Etapa 4: adicionar módulos ao pacote
Dentro do diretório do pacote, adicione módulos Python (.py) que definem funções, classes ou variáveis.
Esses módulos contêm o código real que fornece a funcionalidade do seu pacote. Você pode criar vários módulos dentro do diretório do pacote.
study_bud/
math_tool/
__init__.py
operations.py
statistics.py
Etapa 5: adicionar subpacotes ao pacote
Se seu pacote precisa ter uma estrutura hierárquica ou contém funcionalidades distintas, você pode criar subpacotes dentro do diretório de pacotes.
Um subpacote é simplesmente outro diretório de pacotes dentro do diretório de pacotes principal. Cada sub-pacote deve ter seu __init__.py arquivo. Os subpacotes permitem maior organização e separação de código.
study_bud/
math_tool/
__init__.py
operations.py
statistics.py
geometry/
__init__.py
shapes.py
calculus/
__init__.py
integrations.py
Nestas etapas, você criou um math_tool pacote, adicionou dois módulos (operações.py e estatísticas.py) e dois subpacotes geometria e cálculo cada um com seus módulos.
Seguindo essas etapas, você pode organizar facilmente a funcionalidade relacionada usando um pacote e subpacotes, facilitando o gerenciamento e a reutilização do código.
Como trabalhar com um pacote em Python
Para trabalhar com um pacote, você precisa importá-lo. O importar e de palavras-chave permitem que você importe e use um pacote em seu código.
import math_tool # entire package
Você também pode usar a notação de ponto para importar módulos, subpacotes ou propriedades específicas de um pacote. A notação de ponto permite que você navegue pela estrutura de diretórios do pacote. A notação de ponto torna suas importações mais legíveis e fáceis de manter.
from math_tool.operations import add, multiply # specific functions
No código acima, você navegou a partir do diretório do pacote (math_tool) para o operações módulo usando a notação de ponto e importou duas funções (adicionar e multiplicar).
Importações absolutas vs. Importações Relativas
Com absolutoimporta, especifique o caminho completo do pacote de nível superior (o pacote raiz) para o módulo ou subpacote desejado. Esta é a maneira mais comum e recomendada de importar módulos e pacotes em Python.
from math_tool.geometry.shapes import parallelogram
Começando de math_tool ir para o geometria subpacote, encontre o formas.py módulo e importe o paralelogramo função.
Enquanto relativoimporta permitem que você faça importações relativas à localização do módulo atual usando a notação de ponto para especificar as importações relativas.
Por exemplo, dentro do calculus/integrations.py módulo, você pode usar a importação relativa para importar uma função do formas.py módulo no geometria sub-pacote.
# calculus/integrations.py
from ..geometry.shapes import rhombus
O ponto duplo (""..") diz ao Python para:
- Comece a partir do diretório do subpacote (cálculo) onde o módulo (integrações.py) existe.
- Vá para o pacote pai (math_tool) diretório do subpacote.
- Encontre o geometria subpacote no diretório pai.
- Vá para o formas.py módulo e importar rombo a partir dele.
Portanto, a notação de ponto representa o número de diretórios para navegar a partir do diretório do módulo atual.
Alias Imports for Convenience
Você pode atribuir um alias a uma importação, facilitando a referência em seu código. Aliases são úteis ao lidar com pacotes longos ou nomes de módulos.
Para atribuir um alias, use o como palavra-chave.
import math_tool.calculus as cal
Como distribuir seu pacote em Python
O Python fornece ferramentas e uma plataforma para construir e distribuir seu pacote. Distribuir seu pacote permite que você compartilhe seu código com outros desenvolvedores, promova a colaboração, simplifique a instalação para os usuários e contribua para a comunidade Python mais ampla.
Passo 1: Crie uma conta no PyPI
Índice de pacotes Python (PyPI) é o repositório padrão para pacotes Python. Você pode publicar seus pacotes no PyPI para que outros desenvolvedores possam encontrá-los e instalá-los facilmente.
Certifique-se de lembrar o seu nome de usuário e senha pois você precisará deles para autenticação ao enviar seu pacote para o PyPI.
Essas ferramentas facilitam a configuração, compilação e envio de um pacote distribuível em um único comando.
pip install build wheel twine
Etapa 3: criar um arquivo setup.py
Para distribuir seu pacote, crie um arquivo setup.py no diretório raiz do seu projeto. O setup.py O arquivo contém metadados sobre seu pacote, como nome, versão, autor, descrição, dependências e muito mais.
As ferramentas de gerenciamento de pacotes usarão o setup.py arquivo para configurar e construir seu pacote.
#setup.py
from setuptools import setup, find_packages
setup(
name='' ,
version='1.0.0',
author='' ,
description='A collection of mathematical utility functions',
packages=find_packages(),
install_requires=[
'numpy',
'scipy',
],
)
Etapa 4: criar o pacote
Assim que tiver o setup.py arquivo pronto, você pode usá-lo para construir um pacote distribuível. No seu terminal ou prompt de comando, navegue até o diretório contendo o setup.py arquivo e execute o seguinte comando:
python setup.py sdist bdist_wheel
Este comando gera um dist. diretório contendo um pacote de distribuição fonte (.tar.gz) e um pacote de distribuição wheel (.whl). Você também verá um construir e informação diretório.
Etapa 5: carregar o pacote no PyPI
Com seu pacote pronto, você pode carregá-lo no PyPI.
Execute o seguinte comando:
twine upload dist/*
> Uploading distributions to https://upload.pypi.org/legacy/
> Enter your username: **********
> Enter your password: **********
Visite o seu PyPI página de gerenciamento de projetos para ver seu pacote.
Agora, outros desenvolvedores que acharem seu pacote útil podem instalá-lo e usá-lo localmente.
Como instalar um pacote Python
Gerenciadores de pacotes como pip facilita a instalação e o gerenciamento de pacotes Python de várias fontes, incluindo o Python Package Index (PyPI). Para instalar um pacote usando pip, abra seu terminal ou prompt de comando e use o seguinte comando:
pip install
Para ver todos os comandos e opções disponíveis para pip use o --ajuda opção.
Escrevendo Módulos Limpos
Os pacotes contêm módulos e subpacotes que, por sua vez, contêm outros módulos. É uma boa prática modularizar seu código, especialmente ao trabalhar em projetos maiores, pois isso promove uma melhor organização e legibilidade do código. Portanto, é importante escrever módulos com clareza ao desenvolver com Python.