【问题标题】:Is there a way to run dtale through a python script instead of using the python (or ipython) shell?有没有办法通过python脚本而不是使用python(或ipython)shell来运行dtale?
【发布时间】:2021-08-23 10:26:42
【问题描述】:

我想在不先打开 python shell 的情况下运行 dtale,所以我想用这样的脚本运行它:

python data_analysis_dtale.py

data_analysis_dtale.py 的内容在哪里:

import pandas as pd
import dtale

df = pd.DataFrame({'a':[1,2,3], 'b':[3,4,5]})

s = dtale.show(df)
s.open_browser()

如果我运行它,我最终会在浏览器中打开一个空的 html 页面。相反,如果我在 python 交互式 shell 会话期间执行此代码,它工作正常。有没有办法避免这种情况?我想这是一个更普遍的问题,它不仅仅与 dtale 有关。

【问题讨论】:

    标签: python pandas jupyter-notebook ipython


    【解决方案1】:

    您可以将它嵌入到可以通过 python 脚本运行的烧瓶应用程序中。可以看到导航到路由/create-df: 后创建了dtale实例:

    from flask import redirect
    import pandas as pd
    from dtale.app import build_app
    from dtale.views import startup
    
    if __name__ == '__main__':
        app = build_app(reaper_on=False)
    
        @app.route("/create-df")
        def create_df():
            df = pd.DataFrame(dict(a=[1, 2, 3], b=[4, 5, 6]))
            instance = startup(data=df, ignore_duplicate=True)
            return redirect(f"/dtale/main/{instance._data_id}", code=302)
    
        @app.route("/")
        def hello_world():
            return 'Hi there, load data using <a href="/create-df">create-df</a>'
    
        app.run(host="0.0.0.0", port=8080)
    

    来源: https://github.com/man-group/dtale/blob/master/docs/EMBEDDED_FLASK.md

    【讨论】:

    • 您忘记导入 pandas 但没关系。感谢您的回答。
    【解决方案2】:

    Micho 的回答是如何扩展 D-Tale 和创建您自己的 Flask 应用程序的一个很好的例子。将 D-Tale 作为脚本运行的最简单方法是使用“subprocess”参数。例如

    import dtale
    import pandas as pd
    
    if __name__ == "__main__":
        df = pd.DataFrame([1,2,3,4,5])
        dtale.show(df, subprocess=False)
    

    这将允许 D-Tale 不作为标准脚本 Flask 应用程序运行方式的子进程运行。

    【讨论】:

      猜你喜欢
      • 2019-08-23
      • 2019-11-18
      • 1970-01-01
      • 2011-07-28
      • 2022-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多