4
respostas

ModuleNotFound erro de importação de módulos

Estou a desenvolver um projeto de webscraping com python e tenho a seguinte árvore... Dentro de developer eu configurei algumas variáveis de ambiente. Dentro de views/gerar_arquivos.py eu consigo importar as variáveis dessa forma

from configuracoes.developer import URL_LOGIN, SECRET_KEY ,USER_NAME

. Mas se eu tento a mesma forma de importação em models/db_fluxo_motorista.py ele me estoura o erro de ModuleNotFound... Achei uma solução na internet, que é a seguinte:

import os
import sys
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
import orm.connections as db

Mas achei muito estranho não consegui fazer o import normalmente, já que em um dos módulos está funcionando normalmente. Não consegui nem com o import absoluto nem com o relativo. Alguém me da uma luz? Minha versão do python é a 3.9.1 ![]( Insira aqui a descrição dessa imagem para ajudar na acessibilidade )

4 respostas

Pode postar um print do erro gerado?

Você está relatando o erro ao importar o módulo db_fluxo_motorista.py contido na pasta models, mas no exemplo está importando o módulo connections.py da pasta orm

Com um hook que adiciona .. no começo do diretório, que diz ao programa "procure essa pasta/módulo em um diretório anterior à esse"

  • ex: projetos/scraping/
  • vira: projetos/

Basicamente ele não encontra o módulo quando eu tento fazer o import dentro de connections.py das minhas variaveis de ambiente que estão localizadas no configuracoes/developer.py. Ele da o erro ModuleNotFound: from configuracoes.developer import *. Entratanto, usando a forma de import convencional em views/gerar_arquivos.py ele pega sem nenhum recursos extra que não from pasta.arquivo import X

Realmente sem uma análise do cenário geral fica dificil adivinhar o que acontece.

Em geral os critérios de importação absoluta desde que o pacote esteja instalado no projeto basta usar from NomeDoPacote.NomeDoMódulo import *, agora para saber o que está acontecendo no seu caso infelizmente não da pra adivinhar, é necessario fornecer os fatos. Se não quiser compartilhar o que está fazendo, você pode criar um projeto paralelo com módulos superficiais que repliquem o erro, aí da para fazer a analise do que está acontecendo de fato

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Opa, desculpe ai, não estava com acesso à máquina para enviar o print do erro. Segue:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade