Python 没有名为';后端';

Python 没有名为';后端';,python,Python,您好,我正在尝试将代码分离到文件中。当我尝试从另一个文件导入任何变量时,出现以下错误: 文件“\app.py”,第2行,在 从后端.Measure导入度量,MeasurementSchema,Measure\u模式,measures\u模式 ModuleNotFoundError:没有名为“backend”的模块 我有3个文件: app.py from flask import Flask, Request, jsonify from backend.Measure import Measur

您好,我正在尝试将代码分离到文件中。当我尝试从另一个文件导入任何变量时,出现以下错误:

文件“\app.py”,第2行,在 从后端.Measure导入度量,MeasurementSchema,Measure\u模式,measures\u模式 ModuleNotFoundError:没有名为“backend”的模块

我有3个文件:

  • app.py

    from flask import Flask, Request, jsonify
    from backend.Measure import Measure,MeasurementSchema,measure_schema,measures_schema
    from flask_sqlalchemy import SQLAlchemy
    
    app = Flask(__name__)
    
    db = SQLAlchemy(app)
    
    
    @app.route('/api/measures')
    def getAllMeasurements():
        results = Measure.query.all()
        return measures_schema.jsonify(results)
    
  • Measure.py

    from flask_marshmallow import Marshmallow
    from backend.app import app
    from backend.app import db
    
    ma = Marshmallow(app)
    
    class Measure(db.Model):
        __tablename__ = 'measurements'
        id = db.Column(db.Integer, primary_key=True)
        timestamp = db.Column(db.DateTime, auto_now_add=True)
        temperature = db.Column(db.Float)
    
        def __init__(self, timestamp, temperature):
            self.timestamp = timestamp
            self.temperature = temperature
    
    class MeasurementSchema(ma.Schema):
        class Meta:
            fields = ('id', 'timestamp', 'temperature')
    
    measure_schema = MeasurementSchema()
    measures_schema = MeasurementSchema(many=True)
    
        from sqlalchemy import create_engine
    
        server = 'localhost'
        database = 'TESTDB'
        driver = 'SQL Server Native Client 11.0'
        connection_string = f'mssql+pyodbc://@{server}/{database}?trusted_connection=yes&driver={driver}'
    
        app.config['SQLALCHEMY_DATABASE_URI'] = connection_string
        app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    
        engine = create_engine(connection_string)
        connection = engine.connect()
    
  • db.py

    from flask_marshmallow import Marshmallow
    from backend.app import app
    from backend.app import db
    
    ma = Marshmallow(app)
    
    class Measure(db.Model):
        __tablename__ = 'measurements'
        id = db.Column(db.Integer, primary_key=True)
        timestamp = db.Column(db.DateTime, auto_now_add=True)
        temperature = db.Column(db.Float)
    
        def __init__(self, timestamp, temperature):
            self.timestamp = timestamp
            self.temperature = temperature
    
    class MeasurementSchema(ma.Schema):
        class Meta:
            fields = ('id', 'timestamp', 'temperature')
    
    measure_schema = MeasurementSchema()
    measures_schema = MeasurementSchema(many=True)
    
        from sqlalchemy import create_engine
    
        server = 'localhost'
        database = 'TESTDB'
        driver = 'SQL Server Native Client 11.0'
        connection_string = f'mssql+pyodbc://@{server}/{database}?trusted_connection=yes&driver={driver}'
    
        app.config['SQLALCHEMY_DATABASE_URI'] = connection_string
        app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    
        engine = create_engine(connection_string)
        connection = engine.connect()
    
所有文件都在后台文件夹中,如下图所示

from flask import Flask, Request, jsonify
from backend.Measure import Measure,MeasurementSchema,measure_schema,measures_schema
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

db = SQLAlchemy(app)


@app.route('/api/measures')
def getAllMeasurements():
    results = Measure.query.all()
    return measures_schema.jsonify(results)

我丢失了什么?

如果要从同一文件夹导入文件,应该这样做

In Measure.py

from .app import app
from .app import db
在app.py中

from .Measure import Measure,MeasurementSchema,measure_schema,measures_schema

确保“后端”模块目录位于python路径
import sys中的目录中;打印(sys.path)
。要将文件夹添加到此路径,我需要做什么?您可以执行
sys.path.append()
。最好是文件夹的相对路径(相对于调用模块)。文件“\app.py”,第2行,from.Measure import度量,MeasurementSchema,Measure\u schema,measures\u schema ImportError:尝试在没有已知父包的情况下进行相对导入