You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python/Plotly-DASH报错:'Dash'对象无'run'属性,求解决方案

问题解决:Dash应用启动报错及代码优化

1. 启动报错的直接修复

你遇到的AttributeError: 'Dash' object has no attribute 'run'是因为启动语句写错了:
原错误代码:

app.run.server(debug=True)

根据你的Dash版本选择正确写法:

  • 若使用Dash 2.0之前版本,用:
    app.run_server(debug=True, port=8050)
    
  • 若使用Dash 2.0及以后版本,可简化为:
    app.run(debug=True, port=8050)
    

2. 代码中的其他关键问题

(1)函数返回值错误

你的species_tree()和gene_tree()函数都返回了函数自身(比如return species_tree),这会导致dcc.Graph的figure参数拿到的是函数对象,而非它需要的Plotly Figure对象。必须修改函数,让它返回可视化所需的Figure实例:
举个进化树可视化的简化示例:

def species_tree():
    from ete3 import Tree
    import plotly.graph_objects as go

    # 读取newick格式的进化树文件
    tree = Tree("你的物种树文件路径.newick")
    # 这里需根据树结构提取节点、关系,构建Plotly支持的可视化数据
    # 示例用Treemap替代,实际可使用更适配进化树的可视化类型
    fig = go.Figure(go.Treemap(
        labels=["物种A", "物种B", "物种C"],
        parents=["", "物种A", "物种A"]
    ))
    return fig

(2)回调代码格式问题

你注释的回调代码格式错误,若需要动态更新图表,正确的Dash回调写法应为:

from dash import Input, Output, callback

@callback(
    Output("species-tree", "figure"),
    Input("你的输入组件ID", "value")  # 替换为实际的输入组件
)
def update_species_tree(input_value):
    # 根据输入值返回更新后的Figure
    return species_tree()

3. 修正后的完整代码框架示例

from dash import Dash, html, dcc
from ete3 import Tree
import plotly.graph_objects as go

def main():
    # 提取OG代码的逻辑
    return "示例OG编号"

def gene_tree(OG, search_path):
    # 读取基因树文件并返回Plotly Figure
    tree = Tree(f"{search_path}/{OG}.newick")
    # 完善基因树的可视化逻辑
    fig = go.Figure(go.Treemap(...))
    return fig

def species_tree():
    # 读取物种树文件并返回Plotly Figure
    tree = Tree("物种树文件路径.newick")
    # 完善物种树的可视化逻辑
    fig = go.Figure(go.Treemap(...))
    return fig

app = Dash(__name__)

app.layout = html.Div(children=[
    html.H1(children="My APP", style={"textAlign": "center"}),
    html.Div(children="基因树与直系同源组可视化"),
    dcc.Graph(id="species-tree", figure=species_tree())
])

if __name__ == "__main__":
    # 根据Dash版本选择启动方式
    app.run_server(debug=True, port=8050)
    # 或 app.run(debug=True, port=8050)

内容的提问来源于stack exchange,提问作者gforg34

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 14:40:30