Formulário de contato

Nome

E-mail *

Mensagem *

Imagem

Como corrigir erro $DISPLAY ao rodar serviço Python no Ubuntu

Como corrigir erro $DISPLAY ao rodar serviço Python no Ubuntu

Publicado por em

@CanalQb Solução para erro Missing X server or $DISPLAY no Ubuntu
@CanalQb

Como corrigir o erro "Missing X server or $DISPLAY" no Ubuntu

Ao tentar executar scripts Python que envolvem interface gráfica, como com Selenium ou PyQt, em servidores ou ambientes Ubuntu sem interface gráfica (GUI), você pode encontrar o seguinte erro:

ERROR:ozone_platform_x11.cc(238)] Missing X server or $DISPLAY

Por que esse erro acontece?

Esse erro indica que o programa está tentando acessar o servidor gráfico X11, mas a variável de ambiente $DISPLAY não está definida ou o servidor gráfico não está disponível.

O $DISPLAY é usado para informar a qual tela o programa deve enviar as informações gráficas. Em ambientes sem GUI, isso precisa ser tratado manualmente, especialmente quando se utiliza serviços em segundo plano com systemd.

Configurando a variável DISPLAY em serviços systemd

Se você está rodando seu script Python como um serviço no Ubuntu, siga os passos abaixo para definir corretamente a variável $DISPLAY.

Passo 1: Editar o arquivo do serviço

Abra o arquivo de serviço localizado em /etc/systemd/system/:

sudo nano /etc/systemd/system/nome-do-seu-servico.service

Antes da seção [Service], adicione a seguinte linha:

Environment="DISPLAY=:0"

Se você estiver acessando o servidor remotamente via SSH com tunelamento X, substitua :0 por localhost:0.

Passo 2: Recarregar e reiniciar o serviço

Após editar o arquivo, execute os comandos abaixo para aplicar as alterações:

sudo systemctl daemon-reload
sudo systemctl restart nome-do-seu-servico

Esses comandos recarregam o daemon do systemd e reiniciam o serviço, agora com a variável $DISPLAY corretamente definida.

Alternativas: uso de Xvfb e modo headless

Se você está executando tarefas gráficas em um ambiente sem interface gráfica e deseja evitar o uso do servidor X11 tradicional, você pode:

  • Utilizar modo headless com navegadores como Chrome e Firefox.
  • Instalar o Xvfb, um servidor gráfico virtual.

Exemplo com Xvfb:

sudo apt-get install xvfb
xvfb-run python3 seu_script.py

Essa é uma solução comum para executar testes automatizados com Selenium em ambientes CI/CD ou servidores cloud.

Recomendações adicionais para compatibilidade

  • Prefira scripts que utilizam --headless quando possível.
  • Se utilizar bibliotecas gráficas, valide se há suporte para execução em background.
  • Use ferramentas como Ubuntu Server com bibliotecas leves e específicas para automações.

Responsabilidade de execução

Aviso: Automatizações que acessam servidores ou ambientes gráficos devem ser realizadas com responsabilidade. Evite configurações que sobrecarreguem servidores ou violem termos de uso de plataformas. Analise previamente os requisitos e impactos antes de executar scripts em produção.

Conclusão

O erro ozone_platform_x11.cc(238)] Missing X server or $DISPLAY pode ser resolvido facilmente com a configuração adequada da variável de ambiente DISPLAY em serviços Linux. Alternativas como o uso do modo headless ou do Xvfb também são altamente recomendadas para ambientes sem GUI.

Para ver mais dicas práticas sobre automações e programação com Python, acesse o canal @CanalQb.

Marcadores: Blogger IA Python Script Sistemas Tutorial

© abril 15, 2023 CanalQb — Python, Scripts, Automação, Airdrops e Criptomoedas | Web3 e Tech na Prática

Comentários