"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment résoudre le problème \"_tkinter.TclError : pas de nom d'affichage et pas de variable d'environnement $DISPLAY\" pour les scripts Python utilisant Matplotlib sur un serveur ?

Comment résoudre le problème \"_tkinter.TclError : pas de nom d'affichage et pas de variable d'environnement $DISPLAY\" pour les scripts Python utilisant Matplotlib sur un serveur ?

Publié le 2024-11-12
Parcourir:206

How to Solve the \

_tkinter.TclError : aucun nom d'affichage et aucune variable d'environnement $DISPLAY

Problème

Les scripts Python utilisant Matplotlib échouent sur un serveur avec l'erreur " pas de nom d'affichage et pas de variable d'environnement $DISPLAY" lors de la génération de tracés. Le problème se pose car Matplotlib utilise le backend Xwindows par défaut et est incompatible avec les environnements de serveur dépourvus d'interface utilisateur graphique (GUI).

Solution

Pour résoudre ce problème, configurez Matplotlib pour qu'il utilise un backend non interactif. Il existe plusieurs méthodes pour y parvenir :

  1. Ajouter du code au script : Au début de votre script, avant d'importer matplotlib.pyplot, incluez le code suivant :
import matplotlib
matplotlib.use('Agg')
  1. Modify Matplotlib Configuration File: Dans le fichier .config/matplotlib/matplotlibrc, ajoutez la ligne backend : Agg. Cela demandera à Matplotlib d'utiliser le backend Agg non interactif.
echo "backend: Agg" > ~/.config/matplotlib/matplotlibrc
  1. Utiliser SSH avec transfert X : Lors de la connexion au serveur via SSH, utilisez l'option -X pour activer le transfert Xwindows. Cela permettra aux applications GUI exécutées sur le serveur d'interagir avec l'environnement GUI du client.
ssh -X remoteMachine.com
  1. Export $DISPLAY Variable : Définissez la variable d'environnement $DISPLAY sur une valeur appropriée, telle que l'adresse IP et le numéro d'affichage de la machine du client.
export DISPLAY=mymachine.com:0.0

En implémentant l'une de ces solutions, vous pouvez configurer Matplotlib pour qu'il fonctionne dans un environnement de serveur sans recourir à une interface graphique.

Déclaration de sortie Réimprimé dans cet article: 1729601178 S'il y a une violation, veuillez contacter [email protected] pour supprimer
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3