有没有一种方法可以通过python脚本运行dtale,而不是使用python(或ipython)shell



我想在不打开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会话期间执行此代码,它会正常工作。有办法避免这种情况吗?我想这是一个更普遍的问题,它不仅仅与数据塔有关。

您可以将其嵌入到flask应用程序中,该应用程序可以通过python脚本运行。您可以看到dtale实例是在导航到路由/create-df:后创建的

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

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

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应用程序的运行方式。

最新更新