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

何塞·丹尼尔·查孔·博加林

我正在创建一个个人应用程序flask_restful,并且我正在使用单个models.pyand做所有事情app.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 导入行的注释,我会继续得到ImportError: cannot import BreweryList同样的结果db

controllers/__init__.pymodels/__init__.py都是空的。

这里也是 run.py

import os

from beerinv import initApp

if __name__ == '__main__':

    app = initApp(os.environ['APP_SETTINGS'])
    app.run()
何塞·丹尼尔·查孔·博加林

可以通过放置完整导入路径来遵循@davidism 注释来解决问题:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章