首页 > 解决方案 > ImportError:无法从部分初始化的模块“looker_dash_app.application.datatable”导入名称“init_dashboard”(循环导入)

问题描述

我目前无法弄清楚如何修复上面列出的当前循环导入。这适用于内置 Dash 应用程序的 Flask 应用程序。这是我当前的文件结构:

├── __pycache__
│   ├── config.cpython-39.pyc
│   ├── models.cpython-39.pyc
│   └── wsgi.cpython-39.pyc
├── looker_dash_app
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-39.pyc
│   │   ├── datatable.cpython-39.pyc
│   │   ├── looker_api.cpython-39.pyc
│   │   └── routes.cpython-39.pyc
│   ├── application
│   │   ├── __pycache__
│   │   │   ├── __init__.cpython-39.pyc
│   │   │   ├── datatable.cpython-39.pyc
│   │   │   ├── forms.cpython-39.pyc
│   │   │   ├── looker_api.cpython-39.pyc
│   │   │   └── routes.cpython-39.pyc
│   │   ├── datatable.py
│   │   ├── looker.ini
│   │   └── looker_api.py
│   ├── config.py
│   ├── forms.py
│   ├── looker.ini
│   ├── models.py
│   ├── routes.py
│   ├── slug.db
│   └── templates
│       ├── contact.html
│       ├── layout.html
│       ├── static
│       │   ├── fonts
│       │   │   ├── lobster-regular-webfont.woff
│       │   │   ├── lobster-regular-webfont.woff2
│       │   │   ├── worksans-variablefont_wght-webfont.woff
│       │   │   └── worksans-variablefont_wght-webfont.woff2
│       │   └── main.css
│       └── takeslug.html
└── wsgi.py

8 directories, 31 files

这是我的文件:

wsgi.py

from flask_sqlalchemy  import  SQLAlchemy
from looker_dash_app import init_app 

app = init_app()


db = SQLAlchemy(app)

from looker_dash_app.models import User

if __name__ == "__main__":
    app.run(debug=True)

初始化.py”

from looker_dash_app.application.datatable import init_dashboard  

def init_app():
    """Construct core Flask application."""
    app = Flask(__name__, instance_relative_config=False)
    app.config.from_object("config.Config")
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///slug.db'

    with app.app_context():

        app = init_dashboard(app)

        return app

数据表.py

import dash
from dash import dash_table
from dash import html
import pandas as pd
from looker_dash_app.application.looker_api import get_json


def init_dashboard(server):

    slug = get_json()
    df = pd.read_json(slug)
    """Create a Plotly Dash dashboard."""
    dash_app = dash.Dash(
        server=server,
        routes_pathname_prefix='/dashapp/'
    )

    
    
    dash_app.layout = html.Div(
    [
        dash_table.DataTable(
            id="table",
            columns=[{"name": i, "id": i} for i in df.columns],
            data=df.to_dict("records"),
            style_cell=dict(textAlign="left"),
            style_header=dict(backgroundColor="paleturquoise"),
            style_data=dict(backgroundColor="lavender"),
        )
    ]
    )

    return dash_app.server

looker_api.py

import looker_sdk
from looker_sdk import methods31, models31
from wsgi import db
from models import User




def get_json(slug4):

    slug3 = User.query.order_by(-User.id).first()
    slug4 =slug3.slug
    sdk = looker_sdk.init31()
    me = sdk.me()


    tile = sdk.query_for_slug(slug4)
    tile_query = tile.id

    result = sdk.run_query(query_id=tile_query, result_format="json", limit=10)

    return result

路线.py

from flask import current_app as app
from flask import render_template, flash
from looker_dash_app.forms import slugInput
from wsgi import db
from models import User

@app.route("/", methods=['GET','POST'])

def index():

    form = slugInput()
    if form.validate_on_submit():
       slug1 = User(slug=form.slug.data)
       db.session.add(slug1)
       db.session.commit()
       flash(f'Slug Submitted', 'success')
 
    return render_template('takeslug.html', form=form,)

使用以下命令在 MacOS 上的终端中运行:

python3 wsgi.py

任何查明循环引用所在位置的帮助将不胜感激。

标签: python-3.xflask

解决方案


推荐阅读