Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida no import

Olá pessoal, assim como outros alunos, também estava tendo problemas com o import dos outros scripts. Depois de tentar bastante, percebi que o problema foi resolvido, quando eu tirei os scripts da pasta que criei e os coloquei junto da pasta que possuía outras duas pastas ( a .idea e a venv).

Vocês saberiam me dizer o por quê?

1 resposta
solução!

Olá Emanuel, Tudo bem? Certo, o Python trabalha imports da seguinte forma:

  1. Verifica se o módulo existe no sys.modules (que é um cache de módulos importados anteriormente).
  2. Se não encontrar verifica nos módulos incorporados (built-in) (ex. math, string, etc).
  3. Se ainda assim não encontrar ele procura na lista de diretórios definido por sys.path, que normalmente leva a procurar primeiro na pasta atual do script que está sendo chamado.

É importante notar que além disso no python você pode fazer imports relativos ao diretório atual para isso você pode fazer o seguinte:


# Dada a seguinte estrutura
# |__ Pasta Projeto
#     |__ lib
#     |   |__ meumodulo.py
#     |__ app
#         |__ meuprograma.py
#         |__ config.py
#
# assumindo que estamos no meu programa.py
# podemos importar o config e o meumodulo da 
# seguinte forma:

from .config import configs
from ..lib.meumodulo import algodomodulo

# neste caso o "." na frente do modulo indica para 
# procurar no mesmo diretório, 
# enquanto o ".." faz com que a busca começe de 
# um diretório acima na arvore de diretórios.
# 
# Como falei na explicação acima o sys.path é 
# consultado também, então você poderia adicionar o
# diretório que contem a classe ao sys.path antes de
# importar-lo, ex:

import sys
sys.path.append('/caminho/para/o/modulo')

import modulodocaminho

# Se você quiser consultar os diretórios presentes no 
# sys.path você pode usar o seguinte código:
import sys
print(sys.path)

A resposta curta para sua questão então é que o interpretador python não sabia onde encontrar seus arquivos, e ao mover para a outra pasta você colocou eles na pasta do script que estava sendo executado, que por sua vez é adicionado ao sys.path daquela seção de execução pelo interpretador python quando você inicia a execução do script.

Espero ter respondido sua dúvida.