Flask大型项目设置和错误导入视图

时间:2017-02-25 22:15:28

标签: python flask

我刚刚开始我的第一个Flask项目,我正在尝试将其设置为包,以便应用程序可以分解。我的文件结构是:

project/
   setup.py
   config.py
   requirements.txt
   .gitignore
   appname/
       __init__.py
       view.py
       static/
           stylesheets
       templates/
           html

我已经学习了很多教程,有些人使用python setup.py来运行项目,其他人使用flask run。首先,有什么区别?

现在我的 init .py中的代码是:

from flask import Flask, render_template
from appname import views

app = Flask(__name__)

我的views.py有:

from appname import app
from flask import render_template

@app.route('/')
def index():
    return render_template("index.html")

到目前为止,我一直在尝试flask run,但我收到错误:

AppException:提供的文件/路径(appname)似乎不存在

如果我用视图代码替换from appname导入视图,它可以正常工作。所以问题在于我如何导入,但我觉得我已经尝试了各种导入格式,我知道......

2 个答案:

答案 0 :(得分:1)

嗯,我看到的第一件事就是无限循环的进口:

  • appname导入appname.views
  • appname.views导入appname

您可以打破这样的无限循环导入:在__init__.py中,删除未使用的views导入:

from flask import Flask

app = Flask(__name__)

要运行您的应用程序,您必须告诉Flask应用程序的位置。为此,您需要导出一个环境变量,如下所示:

export FLASK_APP=appname/__init__.py

flask run
 * Serving Flask app "appname"
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

所有内容都在文档的Quick start页面中进行了解释。

哎呀,我忘记了你的第一个问题:python setup.py用于运行setuptools任务(比如带有make的{​​{1}}命令。它与Flask无关。请参阅Building and Distributing Packages with Setuptools

答案 1 :(得分:-2)

您尝试导入视图,而您的模块名为view.py,请参阅python包装上的python docs