Quando si esegue un codice che utilizza la libreria matplotlib
nel mio PC desktop, non ho problemi con la linea:
import matplotlib.pyplot as plt
in basso il codice, che è dove ho effettivamente utilizzare le funzioni stampa.
se corro il codice in un server anche se funziona solo se importare matplotlib
prima, e costringerlo a utilizzare il Agg
backend. Vale a dire, devo aggiungere le seguenti righe all'inizio del codice:
import matplotlib
# Force matplotlib to not use any Xwindows backend.
matplotlib.use('Agg')
(vedere this answer in cui questo è spiegato). Altrimenti il codice si bloccherà con TclError: no display name and no $DISPLAY environment variable
(vedere this question per esempio).
La domanda è: perché devo fare questo? La soluzione funziona perfettamente, ma non so perché non devo farlo nel mio PC desktop, ma devo assolutamente farlo quando il codice viene eseguito nel server.
è sempre possibile impostare $ DISPLAY Esporta DISPLAY =: 0' Penso che ... –
Non sto davvero cercando un altro modo per risolvere questo problema perché quello attuale funziona perfettamente. Quello che voglio è _understand_ perché funziona. Non capisco veramente la soluzione alternativa nel tuo cmmt o BTW :) – Gabriel
'DISPLAY' è usato dal sistema X-Windows su UNIX/Linux, non è colpa di matplotlib o Python, proprio come stanno le cose piattaforma. Il motivo è la flessibilità, è possibile selezionare diversi display in base alla variabile di ambiente. – cdarke