我刚刚开始我的第一个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导入视图,它可以正常工作。所以问题在于我如何导入,但我觉得我已经尝试了各种导入格式,我知道......
答案 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