Question

Je ne suis pas sûr de ce que je fais de mal. Ce serait formidable si vous pouviez m'indiquer quoi lire. J'ai suivi le premier didacticiel CherryPy "Bonjour tout le monde". ajouté un petit complot matplotlib. Question 1: comment savoir où le fichier sera sauvegardé? Il se trouve que je suis en train d'exécuter le fichier. Question 2: Je ne semble pas avoir l'image à ouvrir / voir dans mon navigateur. Lorsque je visualise le code source dans le navigateur, tout semble correct, mais pas de chance, même lorsque j'inclue le chemin d'accès complet à l'image. Je pense que mon problème vient du chemin mais je ne suis pas sûr de la mécanique de ce qui se passe

merci pour l'aide 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)
Était-ce utile?

La solution

Vous trouverez ci-dessous quelques éléments qui ont fonctionné pour moi, mais avant de poursuivre, je vous recommande de lire cette page. sur la façon de configurer des répertoires contenant du contenu statique.

Question 1: Comment savoir où le fichier sera sauvegardé?
Si vous dictez où le fichier doit être enregistré, le processus de recherche de celui-ci devrait devenir plus facile.
Par exemple, vous pouvez enregistrer des fichiers image dans un sous-répertoire appelé "img". dans votre répertoire d’application CherryPy comme ceci:

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

Et ensuite, affichez comme ceci:

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

Question 2: Je ne semble pas pouvoir [obtenir] l'image à ouvrir / afficher dans mon navigateur.
Voici un moyen que j'ai utilisé pour rendre des images statiques disponibles pour une application 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)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top