为什么在设置flask_ENV时from flask.cli import main失败?

2024-06-23 18:47:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经在虚拟环境中安装了flask,如下所述https://flask.palletsprojects.com/en/1.1.x/installation/#install-create-env

  • 创建一个目录并在目录中运行python3-m venv-venv以使用虚拟环境
  • 然后启动venv/bin/activate以激活环境
  • 然后安装烧瓶

然后我创建了一个脚本,如下所述https://flask.palletsprojects.com/en/1.1.x/quickstart/

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

然后,我添加了export FLASK_APP=hello.py并运行了python3-m FLASK run,效果很好

python3 -m flask run
 * Serving Flask app "hello.py"
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

但是当我更改FLASK_ENV=development并运行相同的命令时,我得到了一个错误

python3 -m flask run
 * Serving Flask app "hello.py" (lazy loading)
 * Environment: development
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
/usr/local/opt/python/bin/python3.7: No module named flask

我解除了FLASK_ENV的设置,再次运行了相同的命令,一切都像我第一次这样运行


Tags: runpyhttpsappflaskhellovenvon
2条回答

一种解决方案可能是不设置任何环境变量,只使用python运行Flask

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run(debug=True)

然后通过source env/bin/activate激活虚拟环境,然后运行python main.py

您也可以通过执行app.config['FLASK_ENV'] = 'development'在代码中设置flask环境,但我不推荐这样做,因为如果您要将flask应用程序部署到Heroku或GCP等平台上,它将无法按预期工作

另一种方法是在根目录中的.flaskenv文件中设置环境变量:

$ touch .flaskenv 

然后在.flaskenv中定义环境变量:

FLASK_APP=main.py
FLASK_ENV=development
FLASK_DEBUG=True

安装python-dotenv以帮助加载环境变量:

$ pip3 install python-dotenv

在终端上,运行:

$ flask run

每次更改应用程序时,自动重新加载都会起作用

相关问题 更多 >

    热门问题