"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo resolver el problema \"_tkinter.TclError: sin nombre para mostrar y sin variable de entorno $DISPLAY\" para scripts de Python que utilizan Matplotlib en un servidor?

¿Cómo resolver el problema \"_tkinter.TclError: sin nombre para mostrar y sin variable de entorno $DISPLAY\" para scripts de Python que utilizan Matplotlib en un servidor?

Publicado el 2024-11-12
Navegar:816

How to Solve the \

_tkinter.TclError: no hay nombre para mostrar ni variable de entorno $DISPLAY

Problema

Los scripts de Python que utilizan Matplotlib fallan en un servidor con el error " sin nombre para mostrar ni variable de entorno $DISPLAY" al generar gráficos. El problema surge porque Matplotlib utiliza el backend de Xwindows de forma predeterminada y es incompatible con entornos de servidor que carecen de una interfaz gráfica de usuario (GUI).

Solución

Para resolver este problema, configure Matplotlib para que utilice un backend no interactivo. Hay varios métodos para lograr esto:

  1. Agregar código al script: Al comienzo del script, antes de importar matplotlib.pyplot, incluya el siguiente código:
import matplotlib
matplotlib.use('Agg')
  1. Modificar el archivo de configuración de Matplotlib: En el archivo .config/matplotlib/matplotlibrc, agregue la línea backend: Agg. Esto le indicará a Matplotlib que use el backend Agg no interactivo.
echo "backend: Agg" > ~/.config/matplotlib/matplotlibrc
  1. Usar SSH con reenvío X: Al conectarse al servidor a través de SSH, use la opción -X para habilitar el reenvío de Xwindows. Esto permitirá que las aplicaciones GUI que se ejecutan en el servidor interactúen con el entorno GUI del cliente.
ssh -X remoteMachine.com
  1. Exportar variable $DISPLAY: Establezca la variable de entorno $DISPLAY en un valor apropiado, como la dirección IP y el número de pantalla de la máquina del cliente.
export DISPLAY=mymachine.com:0.0

Al implementar una de estas soluciones, puede configurar Matplotlib para que funcione en un entorno de servidor sin depender de una GUI.

Declaración de liberación Este artículo se reimprime en: 1729601178 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3