抱歉,已经四处寻找这个问题的答案,并且看到有人遇到类似的问题,但到目前为止还没有解决这个问题。
我正在尝试在安装了 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 还很陌生。
非常感谢任何人能够提供的任何帮助!
最佳答案
我看不出你的设置有什么问题。我刚刚创建了完全相同的应用程序,具有(据我所知)相同的环境,并且一切正常。您尚未指定您使用的是哪个版本的 Python,因此以下是我执行的完整步骤(也许您可以发现您错过的内容):
- 使用Python 3.7.4
- 使用
python -m venv venv
创建虚拟环境 - 使用
source venv/bin/activate
激活虚拟环境 - 使用
pip install Flask
安装了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]
关于python - Flask运行错误python,虚拟环境中没有名为flask的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57124701/