Olá Jorge, bom dia!
O erro "ImportError: cannot import name 'ItemCardapio" indica que o Python não conseguiu encontrar ou importar a classe ItemCardapio do arquivo item_cardapio.py.
.
O que eu faria, mas pelo prints parece okay. É:
1.Verificar a definição da classe: no arquivo item_cardapio.py e ver se classe está definida corretamente
class ItemCardapio():
def __init__(self, nome, preco):
self._nome = nome
self._preco = preco
Se a classe estiver com outro nome (Itemcardapio, por exemplo), altere a importação para corresponder ao nome exato
.
2.Checar o caminho de importação: no arquivo bebida.py, a importação está assim:
from modelos.cardapio.item_cardapio import ItemCardapio
.
3. Arquivo __init__.py
O Python trata pastas como módulos apenas se elas contêm um arquivo __init__.py
. Como você tem uma estrutura de diretórios (modelos/cardapio/item_cardapio.py), o Python precisa reconhecer modelos e cardapio como pacotes para que a importação funcione corretamente.
Sem __init__.py
, pode acontecer o erro ModuleNotFoundError ou ImportError, dependendo da forma como o script está sendo executado.
- Confirme se a pasta modelos tem um arquivo
__init__.py
dentro dela. - Confirme se a pasta cardapio também tem um
__init__.py
. - Se esses arquivos não existirem, crie arquivos vazios
__init__.py
nessas pastas para que o Python reconheça os diretórios como pacotes.
Tem outras formas de fazer sem criar os arquivos (ini.py)
.
4.Teste a importação diretamente no terminal rode
python -c "from modelos.cardapio.item_cardapio import ItemCardapio; print(ItemCardapio)"
Se houver erro, ele mostrará mais detalhes sobre o problema.
.