Introdução
Neste laboratório, você aprenderá como verificar se um módulo foi importado em Python. O laboratório cobre os fundamentos da importação de módulos, incluindo a criação e importação de um módulo simples. Você aprenderá como usar a instrução import para trazer módulos para o seu programa e acessar suas funções e variáveis.
O laboratório explora então o dicionário sys.modules, que armazena todos os módulos importados na sessão Python atual. Você também aprenderá como usar o módulo importlib para verificar se um módulo foi importado.
Aprenda sobre a Importação de Módulos
Nesta etapa, você aprenderá sobre a importação de módulos em Python. Módulos são arquivos que contêm definições e instruções Python. A instrução import é usada para trazer módulos para o seu programa atual, permitindo que você use as funções e variáveis definidas dentro deles.
Primeiro, vamos criar um módulo simples. Abra o editor VS Code no ambiente LabEx e crie um novo arquivo chamado my_module.py no diretório ~/project.
## ~/project/my_module.py
def greet(name):
return f"Hello, {name}!"
PI = 3.14159
Este módulo define uma função greet e uma variável PI. Agora, vamos criar outro arquivo Python para importar e usar este módulo. Crie um novo arquivo chamado main.py no diretório ~/project.
## ~/project/main.py
import my_module
name = "LabEx User"
greeting = my_module.greet(name)
print(greeting)
print("PI =", my_module.PI)
Neste arquivo main.py, usamos a instrução import my_module para importar o my_module que criamos anteriormente. Em seguida, acessamos a função greet e a variável PI usando a notação de ponto (my_module.greet, my_module.PI).
Para executar este código, abra um terminal no ambiente LabEx (ele já deve estar aberto no painel inferior do VS Code). Certifique-se de que seu diretório atual é ~/project. Caso contrário, navegue até ele usando o comando cd:
cd ~/project
Agora, execute o script main.py usando o comando python:
python main.py
Você deve ver a seguinte saída:
Hello, LabEx User!
PI = 3.14159
Isso demonstra como importar um módulo e usar seu conteúdo em outro arquivo Python.
Verificar o Dicionário sys.modules
Nesta etapa, você explorará o dicionário sys.modules, que é uma parte crucial do sistema de importação de módulos do Python. sys.modules é um dicionário que contém todos os módulos que foram importados na sessão Python atual. Compreender este dicionário pode ajudá-lo a entender como o Python gerencia módulos.
Para começar, vamos criar um script Python chamado check_modules.py no diretório ~/project. Este script importará o módulo sys e imprimirá as chaves do dicionário sys.modules.
## ~/project/check_modules.py
import sys
print("Modules currently in sys.modules:")
for module_name in sys.modules.keys():
print(module_name)
import my_module
print("\nModules after importing my_module:")
for module_name in sys.modules.keys():
print(module_name)
Este script primeiro importa o módulo sys. Em seguida, ele itera pelas chaves do dicionário sys.modules e imprime o nome de cada módulo. Depois disso, ele importa o my_module criado na etapa anterior e imprime o dicionário sys.modules novamente para mostrar o módulo recém-importado.
Agora, execute o script usando o comando python no terminal:
cd ~/project
python check_modules.py
Você verá uma lista de módulos que já estão carregados quando o interpretador Python inicia, seguida pela mesma lista com my_module adicionado após a instrução import my_module. A saída será semelhante a esta (a lista exata de módulos pode variar):
Modules currently in sys.modules:
builtins
sys
_frozen_importlib
_imp
_warnings
_io
... (many more modules)
Modules after importing my_module:
builtins
sys
_frozen_importlib
_imp
_warnings
_io
... (many more modules)
my_module
Observe que my_module é adicionado ao dicionário sys.modules após a instrução import. Este dicionário atua como um cache, então, se você tentar importar o mesmo módulo novamente, o Python simplesmente o recuperará de sys.modules em vez de recarregá-lo do disco. Essa otimização melhora o desempenho.
Usar importlib para Verificação
Nesta etapa, você aprenderá como usar o módulo importlib para importar módulos programaticamente e verificar sua existência. importlib faz parte da biblioteca padrão do Python e fornece uma maneira de interagir com o sistema de importação.
Vamos criar um script Python chamado verify_import.py no diretório ~/project. Este script usará importlib para importar my_module e verificar se ele foi importado com sucesso.
## ~/project/verify_import.py
import importlib
module_name = "my_module"
try:
module = importlib.import_module(module_name)
print(f"Module '{module_name}' imported successfully.")
print(f"Greeting: {module.greet('LabEx')}")
except ImportError:
print(f"Failed to import module '{module_name}'.")
Neste script, usamos importlib.import_module() para importar my_module. Se o módulo for encontrado e importado com sucesso, o script imprime uma mensagem de sucesso e chama a função greet do módulo. Se o módulo não for encontrado, um ImportError é levantado, e o script imprime uma mensagem de erro.
Agora, execute o script usando o comando python no terminal:
cd ~/project
python verify_import.py
Você deve ver a seguinte saída:
Module 'my_module' imported successfully.
Greeting: Hello, LabEx!
Se você alterasse module_name para um módulo inexistente, como "nonexistent_module", e executasse o script novamente, você veria:
Failed to import module 'nonexistent_module'.
Isso demonstra como usar importlib para importar módulos dinamicamente e lidar com possíveis erros de importação. Isso é particularmente útil em situações em que você precisa carregar módulos com base na entrada do usuário ou em arquivos de configuração.
Resumo
Neste laboratório, você aprendeu sobre a importação de módulos em Python. Você criou um módulo chamado my_module.py contendo uma função greet e uma variável PI. Em seguida, você criou main.py para importar my_module e usar seu conteúdo, demonstrando como a instrução import traz módulos para o seu programa e como acessar funções e variáveis dentro deles usando a notação de ponto.
Você também começou a explorar o dicionário sys.modules, que contém todos os módulos que foram importados na sessão Python atual, uma parte crucial do sistema de importação de módulos do Python.



