Python: Criando pacotes e módulos

Palavras-chave: pacote, módulo, import

Criar um módulo em Python é extremamente simples. Basta apenas criar um arquivo .py dentro de algum diretório listado em sys.path. Alguns desenvolvedores também gostariam de fazer pacotes com módulos em Python. Esses pacotes permitiriam que o programador importasse seus módulos da seguinte maneira:

import meu_pacote.meu_subpacote.modulo
from outro_pacote.outro_subpacote import outro_modulo

Um pacote nada mais é do que um diretório no sistema de arquivos que possui um arquivo __init__.py dentro. Dentro do arquivo __init__.py, deve-se colocar o código de inicialização do pacote, bem como definir a variável __all__, que irá listar todos os símbolos que serão importados no comando from ... import *. No caso em que o arquivo __init__.py fica vazio todos símbolos do pacote serão importados.

Considere a seguinte estrutura:

# meu_pacote/
#    __init__.py -- vazio
#    meu_subpacote/
#       __init__.py -- vazio
#       modulo.py -- imprime "modulo importado"

A partir do diretório atual podemos fazer:

>>> import meu_pacote.meu_subpacote.modulo
modulo importado

Se os arquivos __init__.py não existissem um erro como este aconteceria:

>>> import meu_pacote.meu_subpacote.modulo
Traceback (most recent call last):
  File "", line 1, in ?
ImportError: No module named meu_pacote.meu_subpacote.modulo
This entry was posted in Python. Bookmark the permalink.

7 Responses to Python: Criando pacotes e módulos

  1. Willian says:

    Muuuuuito bom!!!
    Já me perguntei uma vez como faria para importar um ou mais módulos dentro de um diretório, e agora achei a solução!!!

    Valeu!!!

  2. Genos says:

    Como eu faço para alterar o varlo de sys.path?

  3. sys.path é uma lista comum, logo, ela possui os mesmos métodos de manipulação de uma lista tais como list.append(), list.insert(), etc.

  4. Vramos says:

    ainda não consegui fazer nenhum pacote.
    aparece uma mensagem dizendo que não existe nenhum modulo com o tal nome!

  5. Olá Vramos,

    Você não se esqueceu de nada? Colocou o arquivo __init__.py (mesmo que seja vazio) dentro do diretório do “package”?

    Outra pergunta: O diretório onde você colocou o “package” está no seu sys.path (lembrando que o diretório atual está no sys.path)?

  6. Paulo Henrique says:

    Osvaldo estou com um problema estou tentando executar um arquivo que se chama anotato.py só que ele me ocorre o seguinte erro:
    Traceback (most recent call last):
    File “annotpipe.py”, line 13, in
    from gcn.lib.varann.vartype.varant import annotador
    ImportError: No module named gcn.lib.varann.vartype.varant

    Qual procedimento devo tomar em relação a isso?

    Atenciosamente e desde já obrigado!

  7. Eduardo says:

    Resumiu lindamente a criação de pacotes.
    A maioria dos tutoriais usa IDEs e não deixam claro como acontece a mágica.
    Valeu

Comments are closed.