繁体   English   中英

在python中导入子模块

[英]importing sub-modules in python

我正在使用Python / Flask,并大致遵循本指南 ,了解如何构建“大型”应用程序。 我链接到遇到麻烦的部分。

我有以下设置:

/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运行该应用程序。

我是否错过了进行这项工作的地方? 指南有误吗?

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


该指南未提及在CLI中运行flask的任何内容

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

文件夹结构

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

运行

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 export FLASK_APP=app && flask run

因为您已导出路径,所以几乎不需要更改。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM