我具有这样的文件结构:
endpoints/
__init__.py
apartments.py
services/
__init__.py
apartment.py
__init__.py
app.py
在app.py
中from flask import Flask
from endpoints.apartments import apartments_blueprint
app = Flask(__name__)
app.register_blueprint(apartments_blueprint, url_prefix='/apartments')
在apartments.py中:
from flask import Blueprint, request
from services.apartment import ApartmentService
apartments_blueprint = Blueprint('apartments', __name__)
@apartments_blueprint.route('/create', methods=['POST'])
def create():
print(request.data)
ApartmentService.create_apartment('asdf')
但是,当我运行此flask run
时,它说:
ImportError: No module named services.apartment
答案 0 :(得分:0)
服务是从endpoints.apartment
开始的相对导入。在导入中添加前导..
可以更正您的错误:
from ..services.apartment import ApartmentService
由于Python3要求显式的相对导入,并且您可能并不总是从package目录执行此操作,因此还应在.
的导入中添加前导app.py
:
from .endpoints.apartments import apartments_blueprint
使其清晰明了,并避免任何其他问题。