"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como resolver o problema "_tkinter.TclError: sem nome de exibição e sem variável de ambiente $DISPLAY" para scripts Python usando Matplotlib em um servidor?

Como resolver o problema "_tkinter.TclError: sem nome de exibição e sem variável de ambiente $DISPLAY" para scripts Python usando Matplotlib em um servidor?

Publicado em 2024-11-12
Navegar:863

How to Solve the \

_tkinter.TclError: nenhum nome de exibição e nenhuma variável de ambiente $DISPLAY

Problema

Scripts Python usando Matplotlib falham em um servidor com o erro " nenhum nome de exibição e nenhuma variável de ambiente $DISPLAY" ao gerar gráficos. O problema surge porque o Matplotlib utiliza o back-end do Xwindows por padrão e é incompatível com ambientes de servidor que não possuem uma interface gráfica do usuário (GUI).

Solução

Para resolver esse problema, defina o Matplotlib para usar um back-end não interativo. Existem vários métodos para fazer isso:

  1. Adicionar código ao script: No início do seu script, antes de importar matplotlib.pyplot, inclua o seguinte código:
import matplotlib
matplotlib.use('Agg')
  1. Modifique o arquivo de configuração do Matplotlib: No arquivo .config/matplotlib/matplotlibrc, adicione a linha backend: Agg. Isso instruirá o Matplotlib a usar o backend Agg não interativo.
echo "backend: Agg" > ~/.config/matplotlib/matplotlibrc
  1. Usar SSH com encaminhamento X: Ao conectar-se ao servidor via SSH, use a opção -X para habilitar o encaminhamento Xwindows. Isso permitirá que aplicativos GUI em execução no servidor interajam com o ambiente GUI do cliente.
ssh -X remoteMachine.com
  1. Export $DISPLAY Variable: Defina a variável de ambiente $DISPLAY com um valor apropriado, como o endereço IP e o número de exibição da máquina do cliente.
export DISPLAY=mymachine.com:0.0

Ao implementar uma dessas soluções, você pode configurar o Matplotlib para operar em um ambiente de servidor sem depender de uma GUI.

Declaração de lançamento Este artigo foi reimpresso em: 1729601178 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3