Python中阅读Dash代码时遇到包的调用问题如何解决?

这个是实例的代码, 后面的代码里面有 import dash_html_components as html

html.Div, html.Table

这些东西, 然后我搜索了一下找到了 dash_html_components 这个文件夹, 但是文件夹是这样的, 没有看到 Table 或者 Div 这样的定义,这个问题是怎么处理的?

20171215111403

import dash
import dash_core_components as dcc
import dash_html_components as html

import pandas as pd

df = pd.read_csv( ‘https://gist.githubusercontent.com/chriddyp/’ ‘c78bf172206ce24f77d6363a2d754b59/raw/’ ‘c353e8ef842413cae56ae3920b8fd78468aa4cb2/’ ‘usa-agricultural-exports-2011.csv’)

def generate_table(dataframe, max_rows=10): return html.Table( # Header [html.Tr([html.Th(col) for col in dataframe.columns])] +

    # Body
    [html.Tr([
        html.Td(dataframe.iloc[i][col]) for col in dataframe.columns
    ]) for i in range(min(len(dataframe), max_rows))]
)

app = dash.Dash()

app.layout = html.Div(children=[ html.H4(children=‘US Agriculture Exports (2011)’), generate_table(df), dcc.Interval( id=‘interval-component’, interval=1*1000, # in milliseconds n_interval=0 ) ])

if name == ‘main’: app.run_server(debug=True)

我看了一下 init.py 的定义, 是不是把那些定义都写到 js 文件里面了。

import os as _os import dash as _dash import sys as _sys from .version import version

_current_path = _os.path.dirname(_os.path.abspath(file))

_components = _dash.development.component_loader.load_components( _os.path.join(_current_path, 'metadata.json'), 'dash_html_components' )

_this_module = _sys.modules[name]

_js_dist = [{ "relative_package_path": "bundle.js", "external_url": ( "https://unpkg.com/dash-html-components@{}" "/dash_html_components/bundle.js" ).format(version), "namespace": "dash_html_components" }]

for component in _components: setattr(_this_module, component.name, component) setattr(component, '_js_dist', _js_dist)


Python中阅读Dash代码时遇到包的调用问题如何解决?

1 回复

遇到Dash代码里包的调用问题,通常是因为环境里没装对依赖,或者import路径不对。直接上干货,按这个流程排查:

1. 先看报错,确认缺什么包 如果是ModuleNotFoundError: No module named 'xxx',那就是缺包。用pip装上就行:

pip install dash  # 基础包
pip install dash-core-components dash-html-components dash-table  # 常用组件
pip install dash-bootstrap-components  # 如果用bootstrap

2. 检查import语句 Dash的导入方式这几年有变化,老代码和新版本可能不兼容。对照着改:

# 老版本写法(2020年前常见)
import dash
import dash_core_components as dcc
import dash_html_components as html

# 新版本写法(现在推荐)
from dash import Dash, dcc, html, Input, Output, State
from dash import dash_table  # 表格组件单独导入

3. 如果还不行,检查Python路径 有时候自定义模块导不进来,可能是路径问题。在代码开头加这几行:

import sys
import os
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

4. 终极方案:重建虚拟环境 如果依赖一团乱,直接重来:

# 创建新环境
python -m venv dash_env
source dash_env/bin/activate  # Linux/Mac
# 或 dash_env\Scripts\activate  # Windows

# 一次性安装所有常用包
pip install dash pandas plotly

总结建议:先看报错信息,缺包装包,import不对照着改,还不行就重建环境。

回到顶部