Domanda

Non sono sicuro di cosa sto facendo di sbagliato, sarebbe bello se tu potessi indicarmi cosa leggere. Ho seguito il primo tutorial CherryPy "ciao mondo" aggiunto un po 'di trama matplotlib. Domanda 1: come faccio a sapere dove verrà salvato il file? Capita di essere dove sto eseguendo il file. Domanda 2: non sembra che l'immagine venga aperta / visualizzata nel mio browser. Quando visualizzo la sorgente nel browser, tutto sembra a posto, ma senza fortuna, anche quando includo il percorso completo dell'immagine. Penso che il mio problema sia con il percorso ma non sono sicuro della meccanica di ciò che sta accadendo

grazie per l'aiuto Vincent

import cherrypy
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

class HelloWorld:

    def index(self):
        fig = plt.figure()
         ax = fig.add_subplot(111)
         ax.plot([1,2,3])
         fig.savefig('test.png')
        return ''' <img src="test.png" width="640" height="480" border="0" /> '''

    index.exposed = True

import os.path
tutconf = os.path.join(os.path.dirname(__file__), 'tutorial.conf')

if __name__ == '__main__':
    cherrypy.quickstart(HelloWorld(), config=tutconf)
else:
    cherrypy.tree.mount(HelloWorld(), config=tutconf)
È stato utile?

Soluzione

Di seguito sono riportate alcune cose che hanno funzionato per me, ma prima di procedere oltre ti consiglio di leggere questa pagina su come configurare le directory che contengono contenuto statico.

Domanda 1: come faccio a sapere dove verrà salvato il file?
Se decidi dove salvare il file, il processo di ricerca dovrebbe essere più semplice.
Ad esempio, puoi salvare i file di immagine in una sottodirectory denominata " img " all'interno della directory dell'applicazione CherryPy in questo modo:

fig.savefig('img/test.png') # note:  *no* forward slash before "img"

E quindi visualizzalo in questo modo:

return '<img src="/img/test.png" />' # note:  forward slash before "img"

Domanda 2: non mi sembra di essere in grado di far aprire / visualizzare l'immagine nel mio browser.
Ecco un modo in cui ho usato per rendere le immagini statiche disponibili per un'applicazione CherryPy:

if __name__ == '__main__':
    import os.path
    currdir = os.path.dirname(os.path.abspath(__file__))
    conf = {'/css/style.css':{'tools.staticfile.on':True,
        'tools.staticfile.filename':os.path.join(currdir,'css','style.css')},
        '/img':{'tools.staticdir.on':True,
        'tools.staticdir.dir':os.path.join(currdir,'img')}}
    cherrypy.quickstart(root, "/", config=conf)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top