无法导入实现Flask CLI的应用程序模块

时间:2018-09-19 15:56:04

标签: python flask command-line-interface

由于某些原因,当我尝试执行自定义命令时:

  

烧瓶create_user

每当尝试从src文件夹导入任何内容时,我都会收到错误消息:

  

seed_db中的文件“ /app/backend/flask_app/command.py”,第17行       导入src.models   ModuleNotFoundError:没有名为“ src”的模块

/
    __init__.py
    command.py
    run.py
    src/
        __init__.py
        models/
            __init__.py
            user_model.py
  

command.py

import click
from flask import Flask
from flask.cli import with_appcontext

app = Flask(__name__)


@app.cli.command()
@with_appcontext
def create_user():
    import src.models as models
    print("hello")

app.cli.add_command(seed_db)

2 个答案:

答案 0 :(得分:1)

这是导入模块的python方式的问题,与Flask命令无关。

由于 command.py 文件与您可以编写的 models 文件夹处于同一级别,所以:

import models.user_models as users

之后,您可以从用户参考中访问 user_models 模块:

import models.user_models as users
users.some_function_name()

答案 1 :(得分:0)

我找到了解决方法。

我必须删除根目录__init__.py文件。

我从著名的Miguel Grinberg找到了这个答案:

https://github.com/miguelgrinberg/flasky/issues/310#issuecomment-340641813

  

这些文件(__init__.py)使python相信包的主目录在上面的一个目录中,因此该目录已添加到Python路径中。通常,您不希望顶层目录成为Python软件包,以便当前目录进入该路径。

__