|
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
--headlessquando 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.

Comentários
Comente só assim vamos crescer juntos!