Python无法导入相同文件夹结构中的包

2024-05-13 22:02:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用flask_restful创建一个个人应用程序,我用一个models.pyapp.py做所有的事情,但是这个应用程序将会增长,所以我决定进行一些文件夹重组。你知道吗

我目前的结构如下:

/project_folder
    application_name
        __init__.py
        controllers.py
        models.py
    config.py
    manage.py
    run.py
    tests
        __init__.py
        test_controller.py

目前为止一切正常,但我希望结构如下:

/project_folder
    application_name
        __init__.py
        controllers
            __init__.py
            brewery_controller.py
            ...others
        models
            __init__.py
            base_model.py 
            brewery.py
            ...others
    config.py
    manage.py
    run.py
    tests
        __init__.py
        test_controller.py

但我好像没法让它工作。下面是应用程序__init__.py

#/project_folder/application_name/__init__.py
import os

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_restful import Api

from controllers import BreweryList, BreweryResource
from models import db 

def initApp(config):

    app = Flask(__name__)
    app.config.from_object(config)
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

    db.init_app(app)
    api = Api(app)

    api.add_resource(BreweryList, '/breweries')
    api.add_resource(BreweryResource, '/breweries/<brewery_id>')

    return app

我试过了

from brewery_controller import BreweryList, BreweryResource
from base_model import db 

没有运气。如果我取消对Brewery classes import行的注释,ImportError: cannot import BreweryListdb也一样。你知道吗

controllers/__init__.pymodels/__init__.py都是空的。你知道吗

这里还有run.py

import os

from beerinv import initApp

if __name__ == '__main__':

    app = initApp(os.environ['APP_SETTINGS'])
    app.run()

Tags: runnamefrompyimportconfigappflask
1条回答
网友
1楼 · 发布于 2024-05-13 22:02:40

可以通过以下@davidism注释解决问题,方法是放置完整的导入路径:

from application_name.controllers.brewery_controller import BreweryList, BreweryResource
from application_name.models.base_model import db 

相关问题 更多 >