Olá, Murillo. Tudo bom?
Quando se tenta fazer uma importação dentro do jupyter, ele busca pelos módulos em pastas específicas (onde costumam ficar todas as bibliotecas built-in do python). Você pode checar quais são estas pastas com o seguinte código:
import sys
sys.path
Você notará que a pasta onde estão os seus arquivos .py não está listada.
Para utilizar seus arquivos, você vai precisar adicionar a sua pasta ao PATH.
Supondo que esteja utilizando o Windows, busque por Environment Variables for your account (Acho que em português estará algo como Variáveis de ambiente para sua conta) e depois clique em New na nova janela que irá aparecer
Foto 1
Na nova Janela de New User Variable, você adiciona na Variabler name: PYTHONPATH
obs: Tudo junto e em maiúsculo conforme eu escrevi acima.
na Variable value: você adiciona o caminho até os seus arquivos .py com um ; no final. Exemplo :
C:\Users\Rodrigo\Desktop\ALURA\Formacao_Python\Manipulacao_de_strings;
Foto 2
Agora é só fechar o notebook pelo shell e abrir novamente. Agora utilizando o sys.path você encontrará sua pasta adicionada : )
Você pode fazer o mesmo processo para quantas pastas quiser.
Caso não utilize o Windows, basta buscar como adicionar pastas ao PATH do sistema e fazer a mesma coisa.
Agora, sobre a diferença entre as IDEs para Python, creio que seja interessante você dar uma lida sobre cada uma delas independentemente, pois cada IDE tem seus benefícios. O PyCharm por exemplo é bem completo e tem muitas funcionalidades. Você consegue acessar muitas informações sobre o código, as classes, o help, o dir, tudo direto por atalhos do teclado, possui um terminal e várias outras coisas que eu desconheço, mas é bem pesado (Lista de atalhos PyCharm). Quando o assunto é fazer umas poucas linhas simples de código, talvez seja mais interessante utilizar o Sublime ou Notepad++, por exemplo.
Eu particularmente uso o Jupyter pois me atende muito bem, mas volta e meia sinto falta de alguns atalhos e funcionalidades do PyCharm.
É importante notar também que o Jupyter faz a leitura dos códigos por segmento, então as vezes é necessário dar um restart para 'resetar' o valor de uma variável que já foi alterado em outras linhas (mesmo que você esteja voltando alguns segmentos, alterações de segmentos posteriores podem continuar). Esse tipo de mecânica pode causar alguma confusão no começo.
Também costumo utilizar o sublime quando não utilizarei nenhum input e nem quero criar uma visualização.
Mas essas são as minhas observações do pouquíssimo que conheço sobre essas IDEs. Recomendo mesmo que faça uma leitura mais aprofundada e busque mais informações para que você possa encontrar o que melhor atende às suas necessidades.