Pregunta

No estoy seguro de lo que estoy haciendo mal. Sería genial si pudiera indicarme qué leer. He tomado el primer tutorial de CherryPy "hello world" Añadió una pequeña parcela de matplotlib. Pregunta 1: ¿cómo sé dónde se guardará el archivo? Sucede que es donde estoy ejecutando el archivo. Pregunta 2: Parece que no consigo que la imagen se abra / vea en mi navegador. Cuando veo la fuente en el navegador, todo se ve bien pero sin suerte, incluso cuando estoy incluyendo la ruta completa de la imagen. Creo que mi problema está en el camino, pero no estoy seguro de la mecánica de lo que está sucediendo

gracias por la ayuda 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)
¿Fue útil?

Solución

A continuación hay algunas cosas que me han funcionado, pero antes de continuar, le recomiendo que lea esta página sobre cómo configurar los directorios que contienen contenido estático.

Pregunta 1: ¿Cómo puedo saber dónde se guardará el archivo?
Si determina dónde debe guardarse el archivo, el proceso de encontrarlo debería ser más fácil.
Por ejemplo, puede guardar archivos de imágenes en un subdirectorio llamado " img " dentro de su directorio de aplicaciones CherryPy como este:

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

Y luego se muestra así:

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

Pregunta 2: Parece que no soy capaz de obtener la imagen para abrir / ver en mi navegador.
Esta es una forma que he utilizado para hacer que las imágenes estáticas estén disponibles para una aplicación 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)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top