Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Problema de importação no Pycharm

Boa tarde, está ocorrendo um problema no meu pycharm, eu não consigo importar a classe de um módulo, o problema é este:Insira aqui a descrição dessa imagem para ajudar na acessibilidadeAcho que não está funcionando os números dos meus módulos, como faço para indicar que estes números fazem parte do nome do módulo.

Extra: Caso alguém ficou curioso em saber onde eu peguei esses exercicios para fazer em python ou em qualquer outra linguagem de sua preferência (como Java, C#, Javascript, etc), pode acessar este link: https://wiki.python.org.br/ListaDeExercicios. E claro que precisamos das respostas caso não conseguimos fazer de jeito nenhum o código, para isso, vocês podem acessar a este link no GitHub: https://github.com/isquicha/exercicios-logica-python

Obrigado pela atenção,

Igor

6 respostas
solução!

Tem 2 problemas ai, 1 tem solução, apesar de não tão boa, o outro só mudando o nome do arquivo provavelmente.

1º problema:

Para o python o . vai ser como se fosse uma /:

Se você tem o arquivo no path foo/bar/ham.py

O python vai acessar com foo.bar.ham

Então se você tem o arquivo foo.bar/ham.py

E diz pro python, "python from foo.bar.ham import eggs

O python vai procurar a pasta foo, não vai encontrar, e vai retornar um erro.

2º problema:

O python não aceita arquivos que comecem com numeros se você realmente quer continuar usando arquivos assim você pode fazer dessa forma:

classe_bola = import_module("08ExerciciosClasses.01classe_bola")
bola = classe_bola.Bola()

O que eu te recomendo fazer:

Se você pretende ficar no mundo do python eu acho que seria legal você seguir as normas de nomenclatura do python também chamada de PEP 8.

Essa resposta no StackOverFlow explica direitinho como funcionam as regras pra nomes de classes, pastas e arquivos.

Toda essa thread é bem util e mostra bastante coisa legal, recomendo você não só dar uma lida nela mas tambem nos links que ela te manda.

A tabela que eles colocam na segunda resposta dessa thread ai:

TypePublicInternal
Packageslower_with_under
Moduleslower_with_under_lower_with_under
ClassesCapWords_CapWords
ExceptionsCapWords
Functionslower_with_under()_lower_with_under()
Global/Class ConstantsCAPS_WITH_UNDER_CAPS_WITH_UNDER
Global/Class Variableslower_with_under_lower_with_under
Instance Variableslower_with_under_lower_with_under
Method Nameslower_with_under()_lower_with_under()
Function/Method Parameterslower_with_under
Local Variableslower_with_under

Muito obrigado Luigi, então só para concluir, o melhor seria remover os números do meu módulo?

Opa, desculpa demorar pra responder, você não é obrigado a remover o numero do modulo, só não é bom deixar o numero no começo, no caso as pastas tão com o padrão camelCase então coloca o nomeDaPasta01 ao invés de 01nomeDaPasta. Se você for trocar pra snake_case seria nome_da_pasta_01 ou nome_da_pasta01 (normalmente a primeira opção)

Valeu!

Só pra deixar claro, a primeira opção que eu disse for referente a nome_da_pasta_01, o padrão camelCase não é usado em nomes de arquivos no padrão da comunidade do python.

Ok, é verdade, no Python eu vi que usamos para módulos variáveis, etc o padrão snake_case. Já vi outros padrões também, para classes em Java usamos o padrão CamelCase, já métodos usamos o padrão lowerCamelCase.