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

[Dúvida] Estou enfrentando dificuldades para tornar uma aplicação pública no Streamlit

Estou tentando executar uma aplicação no Streamlit que utiliza o XGBoost, mas estou enfrentando um erro ao importar o módulo xgboost. O erro ocorre na linha de código "import xgboost as xgb", e o traceback aponta para os arquivos do Streamlit no diretório /home/adminuser/venv/lib/python3.12/site-packages/streamlit/runtime/scriptrunner/exec_code.py, especificamente na linha 88, onde a função está sendo executada com tratamento de erro. Não estou conseguindo identificar se o problema está relacionado à instalação do xgboost, ao ambiente virtual ou a algum outro conflito de bibliotecas. A aplicação funciona normalmente de modo local. streamlit==1.35 xgboost==2.1.1

6 respostas

Boa tarde, Samuel! Tudo bem com você?

Não ficou claro na sua mensagem qual erro está sendo gerado. Você está recebendo o erro ModuleNotFoundError: This app has encountered an error?

Se sim, para corrigir isso, é necessário adicionar um arquivo chamado requirements.txt no repositório do GitHub do seu projeto vinculado ao Streamlit. O requirements.txt é um arquivo utilizado para especificar todas as dependências que o projeto precisa. Isso inclui bibliotecas como o streamlit, xgboost, scikit-learn e outras que você esteja utilizando. Quando o Streamlit tenta rodar sua aplicação, ele verifica esse arquivo e instala automaticamente todas as dependências listadas, garantindo que o ambiente tenha tudo que é necessário para a execução do código.

Exemplo do conteúdo do arquivo requirements.txt:

streamlit
xgboost
pandas
scikit-learn

Depois de adicionar o arquivo, basta recarregar a URL do Streamlit, e tudo deve funcionar normalmente.

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado

Eu seguir o passo a passo do curso e já tem o requeriments.txt. Conseguir fazer com a biblioteca Prophet, mas agora estou usando o XGBoost, e o erro é exatamente dizendo que na hora de importar a biblioteca XGBoost, não importa no Streamlit. A aplicação funciona de modo local como eu já disse antes, mas não está funcionando quando tento colocar ela pública pelo GitHub + Streamlit. Já tentei usar várias versões do XGBoost no requeriments.txt e continua dando o mesmo erro.

Samuel, eu testei neste repositório para te trazer uma resposta e funcionou normalmente o XGBoost com o Streamlit - usando a versão mais recente de ambos. Porém, sem ver imagens ou o seu projeto completo para que eu possa testar e simular o problema, fico limitado a te ajudar. Você consegue compartilhar o link do seu projeto e a imagem do erro, fazendo favor? Dessa forma, poderei testar e entender melhor seu caso.

Caso não possa compartilhar por conter algum dado sensível, eu encontrei essa discussão na documentação do Streamlit sobre o mesmo problema que você está enfrentando e para o caso em específico, a versão 1.0.2 do XGBoost resolveu o problema.

Vamos nos falando, estou aqui se precisar.

Essa versão não deu certo porque o modelo foi treinado com a versão mais recente e nem abre nessa versão anteriror. Vou disponibilizar o repositório para você verificar o código: https://github.com/samvms/previsao_dc_xgboost/tree/main

solução!

Obrigado por compartilhar seu código. O erro está acontecendo porque seu arquivo no Github está nomeado como requeriments.txt (com i) mas o correto é requirements.txt (com e).

Se você renomear este arquivo no Github, funcionará corretamente. Você pode renomear o arquivo no próprio Github. Para isso, abra o arquivo requeriments.txt dentro do Github e em seguida clique no lápis de edição, mude o nome do arquivo para requirements.txt e faça o commit.

Após a alteração, espere alguns segundos e seu site estará no ar.

Abraços e bons estudos!

hahahha obrigado!