Problemas importando módulos em Python

Sendo professor de disciplinas de introdução à programação com Python, percebi que muitos alunos cometem um erro muito comum e bastante difícil de ser descoberto quando estamos começando.

De vez em quando, apresento módulos Python aos alunos e peço que eles façam um pequeno exemplo utilizando aquele módulo. Ao dar nome ao arquivo-fonte que está digitando, o aluno acaba nomeando o seu arquivo com o mesmo nome do módulo a ser usado.

Por exemplo, peço aos alunos para escrever um programinha simples para conhecer melhor o módulo math. Então, o aluno cria um arquivo chamado math.py, onde digita seu código. Entre as linhas de código inseridas no arquivo, estão:

import math
print math.pi

Ao tentar executar o programa, o usuário receberá uma mensagem dizendo que não existe um atributo pi no módulo math. Daí, o aluno vai lá e pesquisa na documentação do módulo math e vê que o atributo pi de fato existe naquele módulo. O que há de errado?

Simples. Quando executa o programa recém escrito (math.py), a primeira linha faz import de um módulo chamado math(.py). Como o diretório atual faz parte dos caminhos onde o interpretador python busca os módulos que o programador importa, o interpretador acaba, inadvertidamente, importando o arquivo que o usuário criou, ao invés de importar o módulo math(.py) original. Para resolver esse problema, renomeie seu arquivo.

🙂

Quer descobrir em quais diretórios Python busca os módulos importados pelos programas? Execute o código abaixo:

import sys
print sys.path

Um comentário sobre “Problemas importando módulos em Python

  1. Antes de mais nada parabéns pelo trabalho!
    Em segundo estou iniciando meus estudos com python e tive exatamente o mesmo problema.
    estava tento usar o glob e salvei o arquivo com o nome do modulo.

    Obrigado!

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s