信封。运行Minimal Flask应用程序时未设置变量

问题描述 投票:18回答:13

我试图按照以下链接给出的Windows机器上的烧瓶文档:http://flask.pocoo.org/docs/0.11/quickstart/#debug-mode

首先,我在python脚本中编写了下面的代码:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

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

我把它保存在一个名为run.py的文件中

然后在命令窗口中编写此命令:

set FLASK_APP = run.py 
flask run

运行此时,我收到以下错误:

"Error: Could not locate flask application. You did not provide the FLASK_APP environment variable"

我期待得到这个:

Running on http://127.0.0.1:5000/

有人能告诉我如何解决这个问题吗?

python flask
13个回答
44
投票

我在使用PowerShell时面临同样的问题,并且该修复对我有用: 而不是使用set FLASK_APP = run.py,尝试$env:FLASK_APP = "run.py"


0
投票

我通过关闭命令窗口并重新启动它来解决相同的问题。


0
投票

有一个类似的问题。通过使用以下方法得到解决:flask run --no-reload

从烧瓶文件http://flask.pocoo.org/docs/0.12/server/了解到这一点


0
投票

我在为烧瓶运行第一个hello世界时遇到了同样的问题。

理想情况下,应该没有任何空格,因此使用set FLASK_APP = run.py


-1
投票

我在运行Flask快速启动中所述的命令时遇到了同样的问题。在Windows 10上使用Powershell

projects>set export FLASK_APP=hello.py
projects>flask run
 * Running on http://127.0.0.1:5000/

我需要输入python <filename.py>,同时在包含来自flask导入的文件的目录中导入Flask app = Flask(name)

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

之后,您将收到一条带有IP地址的消息

 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

您将IP地址复制到浏览器中,然后您应该看到您的hello world语句。


10
投票

如果你使用powershell它不起作用我不知道为什么请使用cmd.exe,因为我使用VScode编辑器它默认提供powershell作为终端(ctrl+)所以我试图在powershell上运行烧瓶应用程序,它给了我相同的响应当你得到

1)打开cmd.exe(或者如果你像我这样的VSCode用户只需在该终端上写cmd

2)set FLASK_APP=hello.py(没有空格,仅用于第一次运行然后记住直到重启cmd)

3)flask run(或只是烧瓶也会工作)

注意:这仅适用于Windows用户


7
投票
  1. export FLASK_APP=run.py
  2. flask run --host=0.0.0.0

然后可以正常运行,输出如下:

 * Serving Flask app "hello"
 * Forcing debug mode on
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger pin code: 353-795-063

3
投票

你是否以管理员身份运行终端?我有同样的问题,并运行cmd / PowerShell作为管理员为我修复它。

编辑:我说得太早了。以管理员身份运行没有做任

真正的答案(至少我的问题)是一些其他答案的组合。

  1. 而不是使用set FLASK_APP = myApp.py,使用setx FLASK_APP myApp.py
  2. 重新启动终端,FLASK_APP将具有新值

3
投票

我想知道为什么答案中缺少这个。

这是一个简单的解决方案:

添加app.run(port = 5000)

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

app.run(port=5000)

然后在同一目录下运行该命令

python run.app

2
投票

您必须在虚拟环境之外设置FLASK_APP变量。我假设它在@Fang重新启动命令窗口后工作的原因是因为该操作自动退出虚拟环境。

因此,如果您在虚拟环境中(在命令窗口的行开头用(venv)表示),则键入以下命令:

deactivate

set FLASK_APP=run.py

venv\scripts\activate

flask run

1
投票

你的代码是正确的。尝试像这样设置命令行变量:

setx FLASK_APP run.py

然后运行它:flask run


1
投票

setx FLASK_APP test.py成功。注意:如果没有运行,请关闭命令行并启动其他命令行。

D:\projects\flask-oauthlibpy2>.evn\Scripts\activate

(.evn) D:\projects\flask-oauthlibpy2>setx FLASK_APP test.py

SUCCESS: Specified value was saved.

(.evn) D:\projects\flask-oauthlibpy2>flask run
 * Serving Flask app "flask-oauthlibpy2.test"
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [24/May/2017 14:35:06] "GET / HTTP/1.1" 200 -

1
投票

只需放下'='周围的空间!

在寻找解决方案半小时后,我终于得到了“你没有提供FLASK_APP环境变量”的意思。因为我设置的是'FLASK_APP'变量(带空格)。

© www.soinside.com 2019 - 2024. All rights reserved.