olá boa noite,
estou a varios dias tentando resolver esse erro de modulos, alguem poderia me ajura? ja tentei varias opções e nada...
olá boa noite,
estou a varios dias tentando resolver esse erro de modulos, alguem poderia me ajura? ja tentei varias opções e nada...
Bom dia Cleiton, tudo bom?
Esse erro deve estar ocorrendo pois o python esta iniciando o script diretamente no diretório "cardápio", ficando com o diretório padrão do 'os' em "./cardapio" e quando você tenta referenciar "modelos" ele tenta fazer o caminho "./cardapio/modelos". Tenta mover o "app.py" para o mesmo nível do script "conta_bancaria.py", isso deve solucionar o erro
olá Gabriel, obrigado por tentar me auxiliar neste problema, pois bem seguindo sua dica realmente tive uma alteração, porem agors esta apresentando erro no modulo Avaliação em app.py sendo que o codigo esta correto validei os arquivos.py porem ao importar no app.py semprre a mesma menssagem... segue telas do codigo
Certo, o erro tem uma lógica parecida com a anterior. De modo simplificado o problema é em 'from avaliacao import Arquivo', ele deve ser 'from .avaliacao import Arquivo', explicando melhor:
Porque adicionar o '.' e qual diferença ele faz no import?
Ao nos referirmos a um arquivo python via: from .arquivos import Arquivo
o python aplica a seguinte lógica:
Ele vai referenciar o diretório absoluto onde o python foi iniciado (via sys.path
). No seu caso pegando 'C:...\exercicios orientada a objetos', chamado de caminho absoluto
Com o diretório absoluto em mãos, ao dar o comando:
from avaliacao import Avaliacao
Ele vai buscar o arquivo avaliacao.py no diretório absoluto (ficando 'C:...\exercicios orientada a objetos\avaliacao.py') e então tentar encontrar no arquivo a classe Avaliacao.
Mas caso exista um ponto (from .avaliacao import Avaliacao
), então vai configurar a busca com 'level' para retroceder os diretórios do sys.path
do arquivo em que usou o import. Cada ponto adicionado é um nível de retrocesso no diretório (não deve retroceder mais do que o diretório absoluto)
# Estrutura do 'import'
Arquivo = __import__("arquivos", # nome parcial
globals(), locals(),
fromlist=["Arquivo"],
level=1) # ← 1 ponto ➜ “suba 1 nível e depois procure”
No caso de a gente estar no arquivo 'C:...\exercicios orientada a objetos\modelos\restaurantes.py', ao tentar fazer:
from avaliacao import Avaliacao
Ele vai buscar buscar Avaliacao em: Diretório absoluto + avalicao.py ➜ 'C:...\exercicios orientada a objetos\avalicao.py'
No caso de:
from .avaliacao import Avaliacao
Ele vai buscar buscar Avaliacao em: Construção: Caminho do script - nome do script + avalicao.py Resultado: 'C:...\exercicios orientada a objetos\modelos\avalicao.py' (level=1)
E em outro caso como:
from ..avaliacao import Avaliacao
Ele vai buscar buscar Avaliacao em: Construção: Caminho do script - nome do script - o próximo diretório + avalicao.py Resultado: 'C:...\exercicios orientada a objetos\avalicao.py' (level=2)
Espero que tenha entendido, qualquer coisa só chamar aqui ou no LinkedIn
ola Gabriel Garcia Pereira muito obrigado pelo seu retorno, entendi a solução, porem ainda permanece o mesmo erro... bem estranho kkk
Bom dia, vc alterou, mas faltou apenas salvar o script, só dar um Ctrl+
Opa, passando apenas para dar um feed back, deu super certo com o '.' muito obrigado pela ajuda e paciência, com muita dedicação espero conseguir avançar na programação, mais uma vez muito obrigado, agora consigo seguir no curso.