使用PyCharm调试Bokeh服务应用程序

问题描述 投票:5回答:4

Bokeh服务允许使用绘图和小部件编写快速Web应用程序。当我使用bokeh serve --show code.py时,如何调试python代码?

python bokeh
4个回答
6
投票

我不是一个真正的IDE用户,因此我无法真正说出如何使用pycharm和运行应用程序的bokeh serve app.py方式。然而,从0.12.4开始,现在有embedding a Bokeh server as a library的指导和例子。特别是你可以创建一个以“正常”方式运行的app.py

python app.py

我的猜测是,这种做事方式可能会更好地与IDE一起使用。

作为参考,她是一个完整的“独立脚本”嵌入:

import numpy as np
from tornado.ioloop import IOLoop

from bokeh.application.handlers import FunctionHandler
from bokeh.application import Application
from bokeh.layouts import column
from bokeh.models import ColumnDataSource, Slider
from bokeh.plotting import figure
from bokeh.server.server import Server

io_loop = IOLoop.current()

def modify_doc(doc):
    x = np.linspace(0, 10, 1000)
    y = np.log(x) * np.sin(x)
    source = ColumnDataSource(data=dict(x=x, y=y))

    plot = figure()
    plot.line('x', 'y', source=source)

    slider = Slider(start=1, end=10, value=1, step=0.1)
    def callback(attr, old, new):
        y = np.log(x) * np.sin(x*new)
        source.data = dict(x=x, y=y)
    slider.on_change('value', callback)

    doc.add_root(column(slider, plot))

bokeh_app = Application(FunctionHandler(modify_doc))

server = Server({'/': bokeh_app}, io_loop=io_loop)
server.start()

if __name__ == '__main__':
    print('Opening Bokeh application on http://localhost:5006/')
    io_loop.add_callback(server.show, "/")
    io_loop.start()

6
投票

我是这样做的:

  1. 更新为Pycharm CE 2017
  2. 在命令提示符下,运行: $ bokeh / Users / myname / envs / my_venv / bin / bokeh
  3. 从所选菜单中:运行>编辑配置
  4. 输入从第2步到“脚本路径:”的路径
  5. 填写“参数:”serve --show /full/path/to/viz.py --args myargs

这打开了一个浏览器窗口http://localhost:5006/viz并停在viz.py内设置的断点处

希望对你有用


3
投票

散景也可以通过python -m bokeh运行,因为你可以打开运行/调试配置对话框并将解释器选项设置为-m bokeh serve --show,你的脚本将按原样运行


2
投票

另一种方法是运行没有参数的散景服务

bokeh serve

并将您的应用程序推送到服务器。这允许您直接调试python脚本:

def update():
   ...

...
curdoc().add_periodic_callback(update,500)
session=push_session(curdoc())
session.show(plot)
session.loop_until_closed()

您将收到有关push_session的警告,并且不鼓励使用loop_until_closed。但是出于调试目的,它运行良好。

© www.soinside.com 2019 - 2024. All rights reserved.