Pourquoi est-ce à résoudre le "no $AFFICHAGE de l'environnement" problème avec matplotlib?

Lors de l'exécution d'un code qui utilise la matplotlib bibliothèque dans mon PC de bureau, je n'ai pas de problèmes à l'aide de la ligne:

import matplotlib.pyplot as plt

loin dans le code, qui est l'endroit où j'utilise en fait le tracé des fonctions.

Si j'exécute le code dans un serveur mais il ne fonctionnera que si je l'importation matplotlib avant, et les forcer à utiliser la Agg backend. I. e., J'ai ajouter les lignes suivantes au début du code:

import matplotlib
# Force matplotlib to not use any Xwindows backend.
matplotlib.use('Agg')

(voir cette réponse où c'est expliqué). Sinon, le code va se planter avec TclError: no display name and no $DISPLAY environment variable (voir cette question par exemple).

La question est: pourquoi ai-je besoin de faire cela? La solution fonctionne parfaitement, mais je ne sais pas pourquoi je n'ai pas à le faire dans mon PC de bureau mais je dois absolument lorsque le code s'exécute sur le serveur.

vous pouvez toujours définir l' $AFFICHAGE export DISPLAY=:0 je pense ...
Je ne suis pas vraiment à la recherche d'une autre façon de résoudre ce problème, car l'actuel travail fonctionne très bien. Ce que je veux, c'est comprendre pourquoi cela fonctionne. Je ne comprends pas vraiment la solution de rechange dans votre cmmt soit BTW 🙂
DISPLAY est utilisé par le système X-Windows, UNIX/Linux, il n'est pas de la faute de matplotlib ou Python, juste la façon dont les choses sont sur cette plate-forme. La raison en est la flexibilité, les différents écrans peuvent être sélectionnés en fonction de la variable d'environnement.
Êtes-vous sûr que l'AFFICHAGE n'est pas définie par défaut sur votre PC à la maison? C'est souvent dans Linux car l'interface graphique utilise.
A vous de voir si il est installé sur votre système Linux? Utiliser le set ou env commandes. C'est probablement dans l'un des fichiers de démarrage.

OriginalL'auteur Gabriel | 2015-03-23