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

ModuleNotFoundError: No module named 'src'

Olá fórum, bom dia, boa tarde ou boa noite.

Estou tentando executar o arquivo principal.py pelo terminal, porém sempre que executo é apresentado o seguinte erro:

bruno on pop-os in ~/Dev/Python/tdd-com-python/src/leilao
$ python principal.py           
Traceback (most recent call last):
  File "/home/bruno/Dev/Python/tdd-com-python/src/leilao/principal.py", line 1, in <module>
    from src.leilao.dominio import Usuario, Lance, Leilao
ModuleNotFoundError: No module named 'src'

Me parece que preciso, de alguma forma, fazer com que o python reconheça a pasta 'src' como um módulo.

O erro só acontece quando executo pelo terminal, quando o arquivo é executado dentro do PyCharm tudo funciona como o esperado.

bruno on pop-os in ~/Dev/Python/tdd-com-python
$ tree
.
└── src
    └── leilao
        ├── dominio.py
        ├── principal.py
        └── __pycache__
            ├── dominio.cpython-38.pyc
            └── principal.cpython-39.pyc

3 directories, 4 files

O arquivo esta assim:

from src.leilao.dominio import Usuario, Lance, Leilao

gui = Usuario('Gui')
bruno = Usuario('Bruno')

lance_do_bruno = Lance(bruno, 100.0)
lance_do_gui = Lance(gui, 150.0)

leilao = Leilao('Celular')

leilao.lances.append(lance_do_gui)
leilao.lances.append(lance_do_bruno)

for lance in leilao.lances:
    print(f'O usuário {lance.usuario.nome} deu um lance de {lance.valor}')

S.O : Linux

Python instalado: 3.9.1, 3.8.6 (as duas versões apresentam o mesmo erro, PyCharm está configurado na versão 3.8.6 e roda internamente o código. )

Alguém tem alguma sugestão?

2 respostas
solução!

Oii Bruno, como você está?

Neste caso, você precisa falar para o Python executar o arquivo como um módulo, mas isto, fora da pasta src. Então, volte ao terminal ao caminho /Dev/Python/tdd-com-python e execute da seguinte forma:

python -m src.leilao.principal

Qualquer dúvida estou por aqui, tá bom?

Grande abraço!

Olá Nádia, tudo bem por aqui.

Consegui rodar o código, obrigado.

Abraços!