1
resposta

Importar um módulo de uma pasta de nível a cima da pasta atual

Boa tarde, tudo bem ?

Recentemente, me deparei com o seguinte problema: Eu havia criado 2 pastas no mesmo diretório, uma pasta "tests" e outra "entities", dentro da pasta "tests" eu tenho a classe "test.py", dentro dessa classe eu gostaria de importar uma outra classe que fica na pasta "entities", que é a classe "cpf.py", porém ao tentar fazer a importação o python me retorna um erro dizendo que não existe o modulo "entities". Qual seria uma boa prática para resolver esse problema, eu quero poder importar classes de pastas que estão em níveis a cima da pasta em que me encontro, já tentei utilizar o init.py, porém continua retornando o mesmo erro, segue imagem de exemplo :

Print Erro Python import

1 resposta

A forma correta de importar seguindo seu exemplo é: from entities.cpf import CPF

Isso resolveria o seu problema, em relação a boas práticas, existem algumas forma uma delas é tratar os arquivos como pacotes usando o init.py (como você utilizou), além de alguns recursos, isso torna a importação mais simples - recomendo dar uma lida sobre importação em python e o init.py - outra coisa que é um recurso do PyCharm, ao chamar diretamente o método ou a classe (mesmo de arquivos completamentes diferentes) ele irá naturalmente ficar em vermelho, porém, ao clicar em cima ele irá dar a opção de solução e muitas das vezes isso torna o import mais fácil, às vezes esquecemos, temos preguiça, ou por ser mais rápido, nessa "Opção de solução" se você chamou o método/classe corretamente ele irá propor fazer o import onde está esse método/função.

Um exemplo nesse seu código, se fosse fizesse isso: CPF() - Ele daria a opção de fazer o import, outra forma também.