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

Erro ao tentar importar as classes

Não consigo fazer a importação das classes do arquivo dominio.py, já tentei fazer tudo que foi dito nos outros tópicos como criar um arquivo __init__.py (que testei colocar ele dentro de cada uma das pastas pois não sabia qual era o local correto), não estou usando o terminal, mas testei por ele usando o -m pra ver se funcionava, mas também não adiantou e também testei fazer a importação usando outros caminhos, como ir direto do arquivo dominio.py (from dominio import ...) ou começar desde a pasta de origem "teste-phyton...."

Eu estou usando o Python 3.7 que é o mais atualizado e o curso recomenda o 3.6, poderia ser isso o problema? Porque eu não sei mais o que testar.

6 respostas

Robson,

Quem inicia seus estudos em Python estará mais preocupado com o funcionamento do imports do que com o conceito de módulos e pacotes, porém alerto para o fato de que também é importante saber, talvez em um segundo momento, os conceitos de módulos e pacotes.

Para importar um módulo utilizamos o import. import math print(math.sqrt(25))

Ou ainda, código abaixo importará o módulo sqrt do pacote math.

from math import sqrt
 print(sqrt(25))```

obs: Ao utilizar from package import item, o item pode ser um subpacote, submódulo, classe, função ou variável.

Ao nos deparamos pela primeira vez com o comando import, a impressão que temos é que ele funciona apenas para os módulos embutidos da linguagem Python, mas não é bem assim, veja o que a documentação diz "Quando um módulo chamado math é importado, o interpretador procura um módulo embutido com este nome. Se não existe, procura um arquivo chamado math.py em uma lista de diretórios incluídos na variável sys.path."

#
# Conteudo do arquivo `myapp.py`
#
from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
        app.run()

#
# Conteudo do arquivo `wsgi.py`
#
import sys

sys.path.insert(0, "/projetos/flask-test")

from myapp import app as application

Neste momento, esqueça o funcionamento dos scripts, foque sua atenção para a última linha do arquivo wsgi.py:

from myapp import app as application

Ela está dizendo "do arquivo myapp.py importe a variável app com o apelido application".

Dica de leitura, para entender mais sobre módulos e pacotes no python: http://www.devfuria.com.br/python/modulos-pacotes/

Olá Welton, agradeço pela resposta mas o meu problema é que o import não está funcionando como deveria igual ao do professor. Eu estou tentando importar uma class que está em outro arquivo no mesmo diretório, e assim como alguns outros alunos, o import não está reconhecendo a pasta como um modulo. Eu já tentei as soluções apresentadas como criar um arquivo __init__.py, mas nenhuma funcionou.

Robson,

Vc esta usando Windows ou Linux? Vc esta usando alguma IDE? Vc já tentou executar pelo terminal ou prompt do Windows?

Estou usando o Windows 10 e o PyCharm. O Projeto ta salva numa pasta nos meus documentos e não na pasta padrão do PyCharm(não sei se isso pode influenciar). Tentei executar apenas usando o console e terminal do próprio PyCharm. O outro professor usava o Mac OS e isso me atrapalhou um pouco a dominar os comandos no prompt porque são diferentes, então não cheguei a testar por eles.

Robson,

Teste vida prompt do Windows 10 ou melhor pelo Power Shell, pois, se vc não usar o diretório padrão do Pycharm, tem que configurar manualmente no campo Location o diretório de trabalho do projeto. Se vc não sabe como fazer isso, use a apostila da CAELUM em:

https://www.caelum.com.br/apostila-python-orientacao-objetos/pycharm-ide/#criando-um-projeto
solução!

Finalmente eu conseguir descobrir qual era o problema. Ao que parece era o nome de uma das pastas que estava dando problema. Eu utilizei a mesma pasta que o professor disponibilizou os arquivos do projeto, ao eliminar uma delas do diretório, o PyCharm conseguiu localizar e importar o modulo. A pasta em questão é a "testes-python-projeto-inicial". Acredito que os hifens estavam dando problema na hora do PyCharm localizar o modulo, depois que levei a pasta "src" e todo o conteúdo do projeto pra fora dessa pasta, o PyCharm imediatamente conseguiu localizar o modulo.

Welton, agradeço pelas tentativas de me ajudar.