4
respostas

Falha na leitura de módulos.

Bom dia!

Criei a seguinte estrutura de diretórios:

diretorio
| __ business
| __ test

No diretório business inseri minha classe conta e no testum executável que cria um objeto do tipo conta e executa os métodos do mesmo. Fora isso, criei um arquivo __init__.py em business para que seja identificado como um módulo da aplicação e eu consiga enxergar o que se encontra dentro para que importe e utilize.

Pois bem, estou obtendo o erro:

Traceback (most recent call last):
  File "test/testConta.py", line 1, in <module>
    from business.conta import Conta
ModuleNotFoundError: No module named 'business'

Com Python-2.7, a importação e utilização ocorrem normalmente.

Encontrei esse post no Stackoverflow, informando que, a partir da versão 3.3 do Python, não é mais necessário utilizar o __init__.py - no meu caso, a versão é 3.6.5. Como é feito o import com Python-3?

Agradeço a atenção e aguardo retorno.

4 respostas

Adriano, você pode adicionar o diretório que você quer no seu PYTHONPATH para que funcione normalmente. Eu pessoalmente acho mais confiável e simples que imports relativos, que acessam pastas pais.

Adriano,

Vc pode adicionar o python3 do seus programas, importando o modulo sys:

>>> import sys
>>> sys.path.append('../business/')
>>> import conta

Vc poderá utilizar as funções conta.py

Senhores, bom dia!

Agradeço as respostas, mas qual seria o padrão para Python3?

Adriano,

A sugestão da Yan Orestes é mais inseguro pois altera com variáveis de ambiente, no GNU/Linux é MAC/OS e mais tranquilo de fazer, no Windows um pouco mais complicado, mas em qualquer sistema operacional mudar ou abrir o path facilita muito para crackers acessarem seus arquivos. No Python apesar de existir um padrão dado pelo ZEN DO PYTHON - (PEP-20) --> https://ark4n.wordpress.com/2009/05/25/pyctoria-5-o-zen-do-python/

O MELHOR É FAZER DO SEU JEITO, o que for mais fácil para vc e livre de problemas para as pessoas que vão usar seus programas. Dá uma lida é ache o melhor caminho para vc, estamos ai para ajudar!

1) https://www.python.org/dev/peps/pep-0020/

2) https://eusoudev.com.br/python-como-surgiu/

3) https://www.ime.usp.br/~vwsetzer/python-opers-funcoes.html#CUR