Para usar o código de um pacote, você utiliza o comando import
ou from ... import
, mas agora com a sintaxe de "caminho pontilhado" que reflete a estrutura de diretórios.
Assumindo que o diretório minha_aplicacao
esteja no mesmo nível do seu script que está tentando importar, ou em um local que o Python possa encontrar (como o sys.path
ou ativado em uma venv
).
models.py
do pacote minha_aplicacao
:# script_externo.py
import minha_aplicacao.models
# Para usar algo do models:
# usuario = minha_aplicacao.models.Usuario()
validar_email
do módulo validators.py
dentro do subpacote utils
do pacote minha_aplicacao
:# script_externo.py
from minha_aplicacao.utils.validators import validar_email
if validar_email("[email protected]"):
print("E-mail válido!")
# script_externo.py
import minha_aplicacao.utils
# Para usar algo do formatters.py dentro de utils:
# dados_formatados = minha_aplicacao.utils.formatters.formatar_data("2023-01-01")
as
para dar um alias a pacotes, subpacotes ou módulos.# script_externo.py
import minha_aplicacao.utils.formatters as fmt
texto = fmt.formatar_texto("ola mundo")
print(texto)
Importações Relativas (dentro do mesmo pacote):
Quando você está escrevendo código dentro de um módulo que faz parte de um pacote e precisa importar outro módulo ou subpacote do mesmo pacote, pode usar importações relativas. Isso é útil para manter o código portátil e menos dependente da estrutura de diretórios absoluta.
minha_aplicacao/db.py
precisa importar algo de minha_aplicacao/models.py
:# minha_aplicacao/db.py
from . import models # O ponto '.' significa "deste pacote"
# Agora você pode usar models.AlgumaCoisa
minha_aplicacao/main.py
precisa importar algo de minha_aplicacao/utils/formatters.py
:# minha_aplicacao/main.py
from .utils import formatters # Importa o módulo 'formatters' do subpacote 'utils'
# Ou, para importar um item específico:
# from .utils.formatters import formatar_data
from ..
significa um nível acima na hierarquia do pacote.