在python中导入子模块

时间:2016-11-26 14:56:36

标签: python flask

我正在玩Python / Flask并且松散following this guide关于如何构建“大型”应用程序。我链接到我遇到麻烦的部分。

我有以下设置:

/project
  /app
    __init__.py
    /mod_users
      __init_.py
      controllers.py
      models.py
  requirements.txt

我的/project/app/__init__.py看起来像这样。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config.update(dict(
    SQLALCHEMY_DATABASE_URI='postgresql://localhost/python_app',
    SECRET_KEY='development key',
    USERNAME='davidadams',
    PASSWORD=''
))

db = SQLAlchemy(app)

from .mod_users.controllers import mod_users

app.register_blueprint(mod_users)

db.create_all()

我相对引用mod_users包。这有效,但它不像指南的样子。如果我将其更改为指南的方式,我会收到模块未找到错误。

app.mod_users.controllers import mod_users

我是否错过了某个地方才能完成这项工作?指南错了吗?

如果重要的话,我正在使用export FLASK_APP=app && flask run来运行该应用。

1 个答案:

答案 0 :(得分:0)

  

我是否错过了某个地方才能完成这项工作?指南错了吗?

您所做的解决方法是正确的。但是你做的不仅仅是指南。

该指南未提及有关在CLI中运行烧瓶

的任何内容

在文档之后,largeapp将由run.py运行。

文件夹结构

/project
  run.py
  /app
    __init__.py
    /mod_users

<强> run.py

from app import app
app.run(host='0.0.0.0', port=5000, debug=True)

注意:mod_user的路径可以是

from mod_users.controllers import mod_users
from app.mod_users.controllers import mod_users

然后按照以下命令运行

python run.py
  

通过命令export FLASK_APP=app && flask run

在CLI中运行flask

因为您已导出路径,所以很少需要更改。

<强> 1。 mod_user的路径只能是

from mod_users.controllers import mod_users

新文件夹目录

/project
                #2. Do not need `run.py` anymore
  /app
    app.py      #3. Rename `app/__init__.py` into `app/app.py`
    /mod_users