Die Einbettung einer Handlung in eine Webseite mit Python/bokeh

Ich versuche zu statisch einbinden eines bokeh Grundstück in einer persönlichen website, und bin auf einige Verhaltensweisen, die ich nicht verstehe. Grundsätzlich bin ich der Generierung eines Diagramms mit Hilfe bokeh wie folgt:

import bokeh.plotting as bplt
import numpy as np

x=np.random.random(100)
y=np.random.random(100)

bplt.output_file("t.html")
plot=bplt.line(x,y)

##the following line refers to the bokeh installed on my home computer
print plot.create_html_snippet(
           static_path='/usr/local/lib/python2.7/site-packages/bokeh/server/static/')

##the following line refers to the bokeh installed on my remote computer
#print plot.create_html_snippet(
#           static_path='/opt/anaconda/lib/python2.7/site-packages/bokeh/server/static/')

So weit So gut. Dies erzeugt eine Datei, die so aussieht wie (random garbage).embed.js und druckt string mit html-syntax, die ich manuell kopieren in eine html-Datei, die ich aufrufen testembed.html, die ich nachstehend wiedergegeben:

<html>
<body>

<h2>Simple Embed Example</h2>
<p>This is where my plot should be:</p>
<p>
<!--The next 4 lines are the output of the print statement from the python code-->
<script src="ccbd451a-6995-4dd2-b99c-e4140b362997.embed.js"
        bokeh_plottype="embeddata"
        bokeh_modelid="ccbd451a-6995-4dd2-b99c-e4140b362997"
        bokeh_modeltype="Plot" async="true"></script>
</p>

</body>
</html>

Wenn ich den python-code-Referenz meine lokalen python-installation, und kopieren Sie die generierten Dateien (.html und .embed.js) auf meinem lokalen Rechner, ich sehen können die Handlung in der html-Datei.

Jedoch, was ich wirklich tun wollen ist, haben diese auf einem Remotecomputer ausgeführt werden, und die html-Datei zugänglich über das web-auf meiner persönlichen Website.

Wenn ich static_path siehe meine remote-Computers python installieren (wie oben auskommentiert), ich nicht sehen können, der plot in die html-Seite, wenn ich auf Sie durch das web (ie, werde http://mywebsite.com/testembed.html). Ich habe keine Ahnung, warum dies geschieht.

Referenz, hier ist der code, wo das html-snippet-Funktion definiert ist:
https://github.com/ContinuumIO/bokeh/blob/master/bokeh/objects.py#L309
und ich Stelle fest es gibt eine option, ich bin nicht vorbei in create_html_snippet, dh embed_base_url, die könnte haben etwas mit diesem zu tun.

Vielen Dank im Voraus!
Mike

BEARBEITEN
Ich nahm bigreddot's Ratschläge, die das problem gelöst. Das eigentliche problem, das ich gehabt hatte, war, dass der webserver war ich mit war, aus Sicherheitsgründen nur Zugriff auf Dinge, die in meinem public_html - Verzeichnis. Der workaround war rsync die bokeh/static Verzeichnis in mein public_html und zeigen Sie auf, dass:

rsync -ax /opt/anaconda/lib/python2.7/site-packages/bokeh/server/static/ /home/myusername/public_html/bokeh-static/

und ändern Sie dann mein code wie folgt:

import bokeh.plotting as bplt
import numpy as np

x=np.random.random(100)
y=np.random.random(100)

bplt.output_file("t.html")
plot=bplt.line(x,y)


#the following line refers to the bokeh rsynced to my directory
print plot.create_html_snippet(
           static_path='http://www.my_server_website/~myusername/bokeh-static/', 
           embed_base_url = 'http://www.my_server_website/~myusername/where_.js_file_is_located')

und offensichtlich dann kopieren Sie den generierten html-Code in den testembed.html.

InformationsquelleAutor Mike | 2014-03-12

Schreibe einen Kommentar