2016-08-11 4 views
1

PythonAnywhere에서 실행되는 bokeh 및 bokeh 위젯을 사용하는 대화식 웹 응용 프로그램에 대한 최소한의 작동 예제를 찾을 수 없습니다.Bokeh + 대화 형 위젯 + PythonAnywhere

이상적으로는 매개 변수가 변경 될 때 재구성되어야하는 비교적 복잡한 함수 (분석적으로는 잘 모르지만 SymPy로 계산할 수 있음)를 간단하게 나타내 려합니다.

지금까지 찾은 모든 코드는 그렇게하지 않았습니다. https://github.com/bokeh/bokeh/tree/master/examples이거나 bokeh의 구식 버전을 나타냅니다.

대부분의 문서는 bokeh-server 실행에 대해 다루지 만 WSGI (이는 PythonAnywhere가 요청을 처리하는 방법)와 함께 실행하는 방법에 대한 설명이 없습니다. 이 reasone 들어 플라스크 애플 리케이션 내에서 Bokeh 줄거리를 포함 시도했다. 그러나 필자가 이해하는 한 대화식 Bokeh 위젯 (Python에서 일부 계산을 트리거해야 함)을 사용하려면 bokeh-server가 필요합니다. 다른 간단한 도구로 비슷한 결과를 얻을 수 있다면 플라스크 (Flask) 나 보케 (Bokeh)를 사용하는 것에 특별히 신경 쓰지는 않습니다. 불행히도 대화 형 위젯이있는 Jupyter 노트북은 PythonAnywhere에서 옵션으로 보이지 않습니다.

저는 bokeh 0.12를 Python 3.5에 설치했습니다.

플라스크 앱에서 간단한 보케 플롯을 실행했지만 Bokeh 위젯을 사용할 수 없습니다. 여기

+0

보케 서버 애플 리케이션의 사용을 필요로 웹 소켓. 파이썬 애니웨어는 웹 소켓 연결을 포워딩 할 수 있습니까? 그렇지 않은 경우 기술적으로 가능하지 않을 수 있습니다. 또한 링크에서 제공되는 거의 모든 예제는 "매개 변수가 변경되면 무언가를 업데이트합니다"라는 앱을 보여줍니다. 따라서 "수행하지 않는 것"에 대한 설명은 혼란 스럽습니다. 마지막으로 Bokeh 서버 앱은 Jinja 템플릿을 사용할 수 있습니다. 따라서 앱이 단일 페이지 앱인 경우 bokeh 서버 앱 (플라스크 없음)으로 모두 할 수 있습니다. – bigreddot

+0

bokeh가 완벽하게 기능 할 수 있음을 이해합니다. . 아마 내가 놓친 것은 보크 서버를 WSGI에 연결하는 방법 일 것입니다. 지금까지 발견 된 코드에 대한 주석에 관해서는 분명히 PythonAnywhere에서 쉽게 작동하지 않거나 함수를 다시 사용할 수 없다는 것을 의미합니다 (HTTP 요청을 거치지 않고 이상한 bokeh 위젯 사용을 포기하지 않는 한) . – norok2

+0

"나는 보케 서버를 WSGI에 연결하는 것"이 ​​무엇인지 이해하지 못한다.그것이 websocket 연결을 배제한다면 이것은 단순히 작동하지 않을 것입니다. Bokeh 서버는 클라이언트에 대한 websocket 연결을 열고 유지할 수 있어야합니다. 옆으로,이 최근 메일 목록 스레드는 유용 할 수 있습니다/관련 : https://groups.google.com/a/continuum.io/forum/?pli=1#!topic/bokeh/LYmjTXzX43E – bigreddot

답변

2

pythonanywhere는 대화 형 위젯 Jupyter 노트북의 동작 예이다

%pylab inline 
import matplotlib.pyplot as plt 
from ipywidgets import interact 

def plot_power_function(k): 
    xs = range(50) 
    dynamic_ys = [x ** k for x in xs] 
    plt.plot(xs, dynamic_ys) 

interact(plot_power_function, k=[1, 5, 0.5]) 

PythonAnywhere가 ipywidgets 모듈이 미리 설치한다. 그러나 대화 형 위젯이 보이지 않는다면 bash 콘솔에서 jupyter nbextension enable --py widgetsnbextension을 실행하여 노트북에서이 기능을 활성화하십시오. 이 확장 기능을 활성화 한 후 jupyter 서버를 다시 시작해야합니다 (pythonanywhere 대시 보드의 콘솔 실행 프로세스 목록에서 관련 jupyter 프로세스를 강제 종료).

+0

답변 해 주셔서 감사합니다. 명백한 것이 빠진 것이 아니라면 Jupyter 노트북을 제공하기위한 PythonAnywhere 구성 방법이 없다. 내 계획 (무료)이 주피터 노트북을 지원하지 않는 것 같기 때문에 그럴 수 있습니까? – norok2

+1

질문은 MPL이 아니라 Bokeh에 대해 구체적으로 묻습니다. – bigreddot

+0

또한, Jupyter를 사용하여 일반 사용자 상호 작용을 내가 노출 한 위젯으로 제한 할 수 있는지 궁금합니다. – norok2

0

Bokeh 0.12.5 현재 Jupyter 노트북에 Bokeh 서버 응용 프로그램을 직접 포함시킬 수 있습니다. 이것은 노트북에서 대화 형 Bokeh 플롯과 위젯 (실제 파이썬 코드로 뒷받침 됨)을 갖는 가장 강력하고 효과적인 방법입니다.

이 데모 노트북이의 예를 공부할 수 있습니다 :

https://github.com/bokeh/bokeh/blob/master/examples/howto/server_embed/notebook_embed.ipynb

행동이 노트북의 스크린 캐스트는 다음과 같습니다 :

enter image description here

+0

공유해 주셔서 감사합니다. 꽤 좋은! 불행하게도, 이것은 PythonAnywhere 지원 문제를 해결하지 못합니다. – norok2