道歉,一直在寻找这个问题的答案,见过有类似问题的人,但到目前为止还没有运气解决这个问题。
我正在尝试在安装了Flask的虚拟环境(venv
)下建立一个简单的Flask应用程序。我的主目录simple_app/
下有一个文件夹,其中有一个文件__init__.py
,其内容为:
from flask import Flask
def create_app():
app = Flask(__name__)
@app.route('/')
def mainPage():
return 'Hi!'
return app
# to try and run app from script
if __name__ == '__main__':
app = create_app()
app.run()
我有通过.env
指定的FLASK_APP和FLASK_ENV。如果我尝试flask run
,将得到以下输出:
$ flask run
* Serving Flask app "simple_app" (lazy loading)
* Environment: development
* Debug mode: on
* Restarting with stat
...\venv\scripts\python.exe No module named ...venv\Scripts\flask
我可以插入print()
条语句,并且这些错误的输出将显示出来。
但是,如果我运行python simple_app/__init__.py
,则我的应用程序可以正常运行(与"__init__"
一样)。
另外,如果我运行flask routes
,我会看到
$ flask routes
Endpoint Methods Rule
-------- ------- -----------------------
mainPage GET /
static GET /static/<path:filename>
以便Flask似乎确实了解我的应用。
我以前使用这种类型的结构没有问题,因此尽管我对Flask还是很陌生,所以不太确定这里出了什么问题。
非常感谢任何人都可以提供的帮助!
答案 0 :(得分:0)
我看不到您的设置有任何问题。我刚刚创建了完全相同的应用程序,并具有相同的环境(据我所知),并且一切正常。您尚未指定要使用的Python版本,因此这里是我采取的全套步骤(也许您可以发现自己错过的东西):
python -m venv venv
创建的虚拟环境source venv/bin/activate
激活的虚拟环境pip install Flask
的烧瓶export FLASK_APP=simple_app`
export FLASK_ENV=development`
flask run
这导致该应用程序按预期运行。
只有一个.py文件的文件夹结构如下:
.
└── simple_app
└── __init__.py
该.py文件的内容与您所说的完全相同:
__init__.py
:
from flask import Flask
def create_app():
app = Flask(__name__)
@app.route('/')
def mainPage():
return 'Hi!'
return app
# to try and run app from script
if __name__ == '__main__':
app = create_app()
app.run()
$ flask run
* Serving Flask app "simple_app" (lazy loading)
* Environment: development
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: [snip]