[Linux] Résoudre le problème selon lequel le terminal de connexion ssh ne peut pas afficher les images python sans interface graphique [Serveur]

Environnement problématique :

  • J'utilise personnellement un système Windows et je me connecte à un serveur Linux distant via ssh pour la formation. Cependant, l'interface graphique n'est pas installée sur le serveur distant, donc l'image ne s'affiche pas lors du dessin à l'aide d'outils tels que matplotlib en Python.
  • Après avoir utilisé 'Agg' pour ajuster l'affichage de mobaxterm via d'autres didacticiels en ligne, le terminal vscode ne peut toujours pas être affiché.
  • Le but est de faire exécuter le code suivant à distance sous Linux via ssh et d'afficher les images localement :
import matplotlib.pyplot as plt

fig = plt.figure()
plt.plot(range(10))
plt.show()

Solution:

Obtenu à partir d'autres tutoriels sur Internet, remplacez le backend de matplotlib par 'Tkagg', comme suit :

import matplotlib
matplotlib.use('tkagg') # Must be before importing matplotlib.pyplot or pylab!
import matplotlib.pyplot as plt

fig = plt.figure()
plt.plot(range(10))
plt.show()
  • Exécution dans le terminal distant Vscode : le programme signale une erreur "Impossible de charger le backend 'TkAgg' qui nécessite le framework interactif 'tk', car 'headless' est actuellement en cours d'exécution', et l'image ne s'affiche pas. Après avoir essayé de basculer le backend sur « Agg », l'image ne s'affiche pas, mais aucune erreur n'est signalée.
  • Exécuté dans Mobaxterm : l'image s'affiche avec succès sans erreur.

Logiquement parlant, vscode et mobaxterm s'exécutent exactement dans le même terminal, et l'un d'entre eux peut être utilisé universellement. J'ai donc pensé, peut-être que l'image du programme peut être sortie normalement, mais vscode ne peut pas trouver le lieu de sortie. Après tout, le serveur distant n'a pas d'interface graphique. J'appelle donc la commande view :

echo $DISPLAY

Il s'affiche comme suit dans mobaxterm :

Le terminal Vscode affiche vide. Sur cette base, on peut en déduire que vscode est effectivement dû au fait de ne pas pouvoir trouver l'emplacement de sortie, j'ai donc modifié les paramètres de sortie de vscode pour qu'ils soient les mêmes que mobaxterm :

export DISPLAY=:10.0

Désormais, les deux côtés sont cohérents.

Exécutez-le à nouveau dans vscode et il s'affichera avec succès !

 

 

Je suppose que tu aimes

Origine blog.csdn.net/weixin_42569673/article/details/111611554
conseillé
Classement