Introdução
Neste laboratório, exploraremos como usar módulos e pacotes Python para organizar e reutilizar código. Começaremos com exemplos simples e gradualmente construiremos exemplos mais complexos. Ao final deste laboratório, você terá uma sólida compreensão de como usar módulos e pacotes em seus próprios projetos.
Conquistas
- Módulos Python (Python Modules)
- Pacotes Python (Python Packages)
- PyPI
O Que São Módulos e Pacotes Python?
Um módulo em Python é um arquivo que contém definições de funções, classes e variáveis. Podemos usar módulos para dividir programas grandes em pedaços menores e mais gerenciáveis. Módulos também facilitam a reutilização de código em vários projetos.
Um pacote é uma coleção de módulos. Pacotes nos permitem agrupar módulos relacionados e acessá-los usando uma notação de ponto simples.
Existem várias categorias de módulos e pacotes Python:
- Módulos embutidos (Built-in modules): São módulos que estão incluídos com o interpretador Python e estão disponíveis para todos os programas Python. Exemplos de módulos embutidos incluem
math,os,syserandom. - Módulos da biblioteca padrão (Standard library modules): São módulos que fazem parte da biblioteca padrão Python, mas não são embutidos no interpretador. Eles podem ser importados e usados da mesma forma que os módulos embutidos. Exemplos de módulos da biblioteca padrão incluem
json,urllib,reecsv. - Módulos de terceiros (Third-party modules): São módulos que são desenvolvidos e mantidos por indivíduos ou organizações fora da equipe de desenvolvimento principal do Python. Eles podem ser importados e usados da mesma forma que os módulos embutidos e da biblioteca padrão, mas precisam ser instalados separadamente. Existem muitos módulos de terceiros disponíveis, cobrindo uma ampla gama de tópicos e propósitos. Alguns exemplos incluem
numpy,pandas,requestsebeautifulsoup4. - Módulos locais (Local modules): São módulos que estão localizados no mesmo diretório do programa Python que os está usando. Podemos importar módulos locais usando a instrução
importe o nome do módulo, sem especificar o caminho completo. - Importações relativas (Relative imports): São importações que são relativas ao pacote ou módulo atual. Elas nos permitem importar módulos e pacotes que estão localizados em um diretório diferente do atual. Podemos usar importações relativas para importar módulos e pacotes que fazem parte do mesmo projeto, mas são organizados em uma estrutura de diretórios diferente.
Em resumo, módulos e pacotes Python podem ser classificados com base de onde vêm e como são acessados. Módulos embutidos e da biblioteca padrão estão incluídos com o interpretador Python e estão disponíveis para todos os programas Python, enquanto módulos de terceiros precisam ser instalados separadamente. Módulos locais e importações relativas nos permitem importar módulos e pacotes que estão localizados no mesmo projeto, mas em uma estrutura de diretórios diferente.
Aqui está um exemplo de como usar um dos módulos Python embutidos, o módulo math.
Abra uma nova sessão do interpretador Python e digite o seguinte código:
python3
import math
## Calculate the square root of 16
x = math.sqrt(16)
print(x) ## Output: 4.0
## Calculate the sine of pi
y = math.sin(math.pi)
print(y) ## Output: 1.2246467991473532e-16
## Calculate the factorial of 5
z = math.factorial(5)
print(z) ## Output: 120
O módulo math é um módulo Python embutido que fornece funções e constantes matemáticas. Algumas das funções disponíveis no módulo math incluem sqrt(), sin(), cos(), tan(), log(), exp() e factorial(). O módulo math também fornece constantes como pi e e.
Podemos usar a instrução import para importar o módulo math e, em seguida, chamar suas funções e acessar suas constantes em nosso código.
No exemplo acima, usamos a função sqrt() para calcular a raiz quadrada de 16, a função sin() para calcular o seno de pi e a função factorial() para calcular o fatorial de 5. Também usamos a constante pi para representar o valor de pi na chamada da função sin().
Existem muitos outros módulos Python embutidos que fornecem funções e constantes úteis. Alguns exemplos incluem o módulo os para interagir com o sistema operacional, o módulo datetime para trabalhar com datas e horas e o módulo random para gerar números aleatórios. Você pode encontrar uma lista completa dos módulos Python embutidos na documentação.
Criar um Módulo Python
Nesta etapa, criaremos um módulo Python. Um módulo é um arquivo que contém código Python.
Aqui está um exemplo simples de como criar e usar um módulo Python:
Primeiro, crie um novo arquivo chamado my_module.py no caminho /home/labex/project/. Este será nosso arquivo de módulo.
No arquivo my_module.py, defina uma função chamada say_hello() que imprime uma saudação no console:
def say_hello():
print("Hello from my_module!")
Salve o arquivo.
Agora, abra um novo arquivo Python (ou entre no interpretador Python) e importe o módulo my_module usando a instrução import:
import my_module
Para usar a função say_hello() do módulo my_module, podemos chamá-la assim:
my_module.say_hello() ## Output: "Hello from my_module!"
É isso! Criamos e usamos com sucesso um módulo Python.
Exceção ImportError
Observe que, ao importar um módulo, o Python procura o arquivo do módulo no diretório atual, bem como em quaisquer diretórios listados na variável de ambiente PYTHONPATH. Se o arquivo do módulo não for encontrado, obteremos uma exceção ImportError.
Vamos tentar importar um módulo que não existe.
Abra uma nova janela de terminal e altere o diretório atual para /home/labex/:
cd /home/labex/
Agora, abra um novo interpretador Python e tente importar o módulo my_module:
python3
import my_module
Você deve obter uma exceção ImportError:
ModuleNotFoundError: No module named 'my_module'
Você pode adicionar um diretório à variável de ambiente PYTHONPATH adicionando a seguinte linha ao seu arquivo Python:
import sys
## my_module.py is located in the /home/labex/project/ directory
sys.path.append("/home/labex/project")
import my_module
my_module.say_hello()
Observe que a função sys.path.append() deve ser chamada antes da instrução import.
Criar Pacotes Python
Nesta etapa, criaremos um pacote Python. Um pacote é um diretório que contém módulos Python.
Vamos aprimorar o exemplo da etapa anterior.
Primeiro, crie um novo diretório chamado my_package no caminho /home/labex/project/. Este será nosso diretório de pacote.
Dentro do diretório /home/labex/project/my_package, crie um novo arquivo chamado __init__.py. Este é um arquivo especial que informa ao Python que o diretório my_package deve ser tratado como um pacote.
Dentro do diretório my_package, crie um novo arquivo chamado my_module.py. Este será nosso arquivo de módulo.
No arquivo my_module.py, defina uma função chamada say_hello() que imprime uma saudação no console:
def say_hello():
print("Hello from my_module!")
Agora, abra um novo arquivo Python (ou entre no interpretador Python) e importe o pacote my_package:
import my_package
Para usar a função say_hello() do módulo my_module, podemos chamá-la assim:
my_package.my_module.say_hello() ## Output: "Hello from my_module!"
É isso! Criamos e usamos com sucesso um pacote Python com um módulo.
Aqui está a estrutura de diretórios do nosso projeto:
my_package/
├── __init__.py
└── my_module.py
Este exemplo mostra como podemos criar um pacote e acessar seus módulos usando a notação de ponto. O pacote my_package contém o módulo my_module, e podemos acessar a função say_hello() do módulo my_module chamando my_package.my_module.say_hello().
Neste contexto, my_package é um pacote Python e my_module é um módulo Python. Pacotes nos permitem organizar nosso código em uma estrutura hierárquica, o que pode ser útil para projetos maiores com muitos módulos.
Em resumo, a principal diferença entre um pacote e um módulo é que um pacote é uma coleção de módulos que pode ser acessada usando uma notação de ponto, enquanto um módulo é um arquivo autônomo que contém definições de funções, classes e variáveis.
Pacotes de Terceiros em Python
Pacotes de terceiros (third-party packages) Python são pacotes que são desenvolvidos e mantidos por indivíduos ou organizações fora da equipe de desenvolvimento principal do Python. Eles podem ser importados e usados da mesma forma que os módulos da biblioteca padrão e embutidos, mas precisam ser instalados separadamente.
Existem muitos pacotes de terceiros disponíveis para Python, cobrindo uma ampla gama de tópicos e propósitos. Alguns exemplos incluem numpy para computação científica, pandas para análise de dados, requests para trabalhar com requisições HTTP e beautifulsoup4 para web scraping.
A razão mais importante pela qual o Python é tão popular é a abundância de Pacotes de Terceiros.
Para instalar um pacote de terceiros, podemos usar o gerenciador de pacotes pip, que está incluído no Python por padrão. Por exemplo, para instalar o pacote requests, podemos executar o seguinte comando:
pip install requests
Também podemos usar outros gerenciadores de pacotes, como conda, para instalar pacotes de terceiros. Consulte o Anaconda para mais informações.
Depois que o pacote é instalado, podemos importá-lo e usá-lo em nosso código Python. Por exemplo, aqui está como podemos usar o pacote requests para enviar uma requisição HTTP e imprimir a resposta:
python3
import requests
response = requests.get("https://www.example.com")
print(response.text)
Este código envia uma requisição HTTP GET para a URL https://www.example.com usando o pacote requests e, em seguida, imprime o texto da resposta no console.
A função requests.get() envia uma requisição HTTP GET para a URL especificada e retorna um objeto HTTPResponse que contém os dados da resposta. O objeto de resposta possui vários atributos e métodos que nos permitem acessar e manipular os dados da resposta.
Neste caso, o atributo response.text contém o corpo da resposta como uma string. Ao chamar print(response.text), estamos imprimindo o corpo da resposta no console.
Os pacotes de terceiros Python são uma parte importante do ecossistema Python, pois fornecem soluções prontas para tarefas comuns e estendem a funcionalidade do Python. Eles podem nos poupar tempo e esforço, fornecendo soluções pré-construídas que podemos usar em nossos projetos, em vez de ter que construir tudo do zero.
Além do tempo e esforço economizados ao usar pacotes de terceiros, eles também podem nos ajudar a escrever um código mais confiável e sustentável. Ao usar pacotes bem testados e amplamente utilizados, podemos aproveitar o trabalho de outras pessoas e nos concentrar em resolver nosso problema específico.
No geral, os pacotes de terceiros Python são um recurso importante para estender a funcionalidade do Python e para resolver tarefas comuns. Eles podem nos poupar tempo e esforço, nos ajudar a integrar com outras ferramentas e bibliotecas e contribuir para a confiabilidade e sustentabilidade do nosso código.
Resumo
Neste laboratório, aprendemos como usar módulos e pacotes Python para organizar e reutilizar código. Vimos como importar e usar módulos e pacotes em nossos programas e também aprendemos como criar nossos próprios pacotes. Ao usar módulos e pacotes, podemos escrever um código mais limpo e mais fácil de manter.



