line 26, in <module> from app import app ImportError: cannot import name 'app' from 'app'

line 26, in <module> from app import app ImportError: cannot import name 'app' from 'app'

我想用 python app1.py 打开我的 python 应用程序,但它显示 error.My AppData\Local\Programs\Python\Python39\lib\site-packages\app\__init__.py 文件是空的,我尝试了一些其他的网站上的解决方案,但他们根本没有帮助我。我的仪表板目录中还有一个 init.py 文件,但它也是空的,下面是我的项目树

import dash
import dash_core_components as dcc
import dash_bootstrap_components as dbc
import dash_html_components as html
from dash.dependencies import Input, Output, State
import dash_table as dt
from dash_table.Format import Format, Group, Scheme, Symbol
import datetime
from datetime import timedelta
#import connect
import plotly.graph_objects as go
import pandas as pd
import math
import re
import numpy as np
from flask import send_file
import io
import flask 
import os
import sys
from waitress import serve
import json
#import kaleido
import plotly
import base64
from app import app
import utils
import mysql_queries
import mssql_queries
import mssql_conn
import constants

def convert_timedelta(timedelta):
    total_seconds = timedelta.total_seconds()
    hours = int(total_seconds // 3600)
    minutes = int(total_seconds // 60 % 60)
    seconds = int(total_seconds % 60)
    if hours < 10:
        hours = "0" + str(hours)
    if minutes < 10:
        minutes = "0" + str(minutes)
    if seconds < 10:
        seconds = "0" + str(seconds)
    return str(hours) + ":" + str(minutes) + ":" + str(seconds)

def convert_timedelta_int(timedelta):
    total_seconds = timedelta
    hours = int(total_seconds // 3600)
    minutes = int(total_seconds // 60 % 60)
    seconds = int(total_seconds % 60)
    if hours < 10:
        hours = "0" + str(hours)
    if minutes < 10:
        minutes = "0" + str(minutes)
    if seconds < 10:
        seconds = "0" + str(seconds)
    return str(hours) + ":" + str(minutes) + ":" + str(seconds)

def convert_time_to_string(timedelta):
    total_seconds = timedelta
    hours = int(total_seconds // 3600)
    minutes = int(total_seconds // 60 % 60)
    seconds = int(total_seconds % 60)
    if hours < 10:
        hours = "0" + str(hours)
    if minutes < 10:
        minutes = "0" + str(minutes)
    if seconds < 10:
        seconds = "0" + str(seconds)
    return str(hours) + ":" + str(minutes) + ":" + str(seconds)

def convert_time_string_to_minutes(time_string):
    indices = time_string.split(":")
    indices = [int(i) for i in indices]
    total_time = int(indices[0] * 60 + indices[1] + indices[2] / 60)
    return total_time

def processing(records, taktzzeit, effizienz):
    dataframe = pd.DataFrame.from_records(records)
    dataframe.columns = ["Error ID", "Alert Text", "Error Count", "Down Time"]
    dataframe["Relative Down Time"] = [round(element*100/dataframe["Down Time"].sum(), 2) for element in dataframe["Down Time"]]
    dataframe["Estimated Loss"] = [round((element.total_seconds() * float(effizienz))/taktzzeit,0) for element in dataframe["Down Time"]]
    dataframe = dataframe.sort_values(by="Down Time", ascending=False).reset_index(drop=True)
    column = [dataframe["Relative Down Time"][0]]
    for i in range (1, len(dataframe["Relative Down Time"])):
        value = round(column[i-1] + dataframe["Relative Down Time"][i], 2)
        if value >= 100:
            column.append(100)
        else:
            column.append(value)
    dataframe["Cumulative Percentage"]=column
    return dataframe

我的项目树: 找到目录:.

       app.py
        config.ini
        connect.py
        constants.py
        index.py
        mssql_config.ini
        mssql_conn.py
        mssql_dbconfig.py
        mssql_queries.py
        mysql_queries.py
        nav.py
        prject.py
        python_mysql_dbconfig.py
        test.py
        users.csv
        user_mgmt.py
        utils.py
        __init__.py
Found directory: .\apps
        app1.py
        app2.py
        app3.py
        app4.py
        app5.py
        app6.py
Found directory: .\apps\__pycache__
        app1.cpython-39.pyc
        app2.cpython-39.pyc
        app3.cpython-39.pyc
        app4.cpython-39.pyc
        app5.cpython-39.pyc
        app6.cpython-39.pyc
Found directory: .\assets
        bootstrap.min.css
        custom.css
Found directory: .\__pycache__
        app.cpython-39.pyc
        connect.cpython-39.pyc
        constants.cpython-39.pyc
        mssql_conn.cpython-39.pyc
        mssql_dbconfig.cpython-39.pyc
        mssql_queries.cpython-39.pyc
        mysql_queries.cpython-39.pyc
        nav.cpython-39.pyc
        test.cpython-39.pyc
        user_mgmt.cpython-39.pyc
        utils.cpython-39.pyc`
enter code here

这在我的 app.py 主词典里

import dash
import dash_bootstrap_components as dbc
import dash_auth
import user_mgmt

#app = dash.Dash(external_stylesheets=[dbc.themes.COSMO])
app = dash.Dash(__name__)
server = app.server
app.title = "Jifeng Manufacturing Report"
auth = dash_auth.BasicAuth(
    app,
    user_mgmt.read_users()
)

根据我们在评论中的讨论,由于您的 app.py 不在 PYTHONPATH 上,我的猜测是路径上还有其他一些同名的文件不包含 app 对象,因此你的错误。

至 运行 app1.py 您可以从项目的根目录使用此命令:

python -m apps.app1