python-3.x - 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
任何查明循环引用所在位置的帮助将不胜感激。
解决方案
推荐阅读
- node.js - node.js + sqlite:如果我运行脚本两次,则会出现分段错误
- sql - 从 LargeTableWithFewValuesForColA 中选择 DISTINCT ColA 的最有效方法
- sqlite - 将表关系连接到一个输出 SQLite
- angular - 用户单击链接时如何隐藏 Angular Material Sidenav
- cmd - 从 SCCM 运行时,我的安装程序包抛出 3010 或 1641。如果我以管理员身份运行,则工作正常
- amazon-web-services - AWS S3在有人下载该对象时删除文件
- performance - 在 dart 中使用对象作为映射键会对性能产生重大影响吗?
- angular - 如何实现不同环境的文件路径
- firebase - 在设定的时间段后从 Firebase 检索随机数据
- python - 如何在 Pyspark 的管道分隔文件中处理数据中的逗号