2009-10-21 10 views
4

Je ne suis pas sûr de ce que je fais mal, ce serait génial si vous pouviez me diriger vers quoi lire. J'ai pris le premier tutoriel CherryPy "Bonjour tout le monde" ajouté un petit complot matplotlib. Question 1: comment savoir où le fichier sera sauvegardé? Il se trouve être où je cours le fichier. Question 2: Je ne semble pas obtenir l'image pour ouvrir/visualiser dans mon navigateur. Quand je regarde la source dans le navigateur, tout semble correct mais pas de chance, même quand j'inclus le chemin complet de l'image. Je pense que mon problème est avec le chemin, mais pas sûr de la mécanique de ce qui se passeCherryPy, charger l'image de matplotlib, ou en général

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) 

Répondre

5

Voici quelques choses qui ont travaillé pour moi, mais avant d'aller plus loin Je vous recommande de lire this page sur la façon de configurer les répertoires qui contiennent du contenu statique.

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

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

Et puis afficher comme ceci:

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

Question 2: Je ne semble pas pouvoir obtenir l'image pour l'ouvrir/la voir dans mon navigateur.
Voici une façon que j'ai utilisé pour faire des images statiques disponibles à 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) 
+0

alors comment est « répertoire d'applications CherryPy » déterminé? Je pensais que c'était là que le fichier myapp.py était exécuté. Je n'ai pas encore lu les informations de fichier statique que vous avez recommandé. Faire ça maintenant. Merci – Vincent

+0

Le répertoire de l'application CherryPy est situé partout où se trouve votre fichier myapp.py, vous avez raison. Dans mon exemple, le sous-répertoire "img" se trouve dans le même répertoire que le fichier myapp.py. – bernie

+0

Je courais myapp.py par "python /Users/vmd/Downloads/CherryPy-2.3.0/cherrypy/tutorial/tut01_helloworld1.py" Ce qui n'a pas fonctionné. Il semble que le fichier est enregistré dans le répertoire dans lequel vous vous trouvez lorsque vous exécutez myapp.py après "cd /Users/vmd/Downloads/CherryPy-2.3.0/cherrypy/tutorial" puis "python tut01_helloworld1.py" cela a fonctionné Merci encore Vincent – Vincent

Questions connexes