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

时间:2016-06-15 04:13:41

标签: python flask

我正在尝试按照以下链接给出的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/

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

17 个答案:

答案 0 :(得分:43)

我在使用PowerShell时遇到了同样的问题,而且该解决方案对我有用:
而不是使用set FLASK_APP = run.py,请尝试$env:FLASK_APP = "run.py"

答案 1 :(得分:10)

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

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

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

3)flask run(或只是烧瓶也可以)

注意:这仅适用于Windows用户

答案 2 :(得分:7)

  1. export FLASK_APP=run.py
  2. flask run --host=0.0.0.0
  3. 然后可以正常运行,输出类似:

     * 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 :(得分:3)

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

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

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

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

答案 4 :(得分:1)

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

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

deactivate

set FLASK_APP=run.py

venv\scripts\activate

flask run

答案 5 :(得分: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 -

答案 6 :(得分:1)

只需放下空间' =' !

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

答案 7 :(得分:1)

我在Windows上遇到了同样的问题,并从烧瓶文档中找到了解决方案:https://flask.palletsprojects.com/en/1.1.x/tutorial/factory/

我的文件结构: Flask_folder >> app

(NB!应用程序文件夹包含:__init_.py和routes.py)

> set FLASK_APP=app

> set FLASK_ENV=development

> flask run

答案 8 :(得分:0)

有类似的问题。通过使用以下解决方案: 烧瓶运行--no-reload

从烧瓶文档http://flask.pocoo.org/docs/0.12/server/

中了解到这一点

答案 9 :(得分:0)

    > set FLASK_APP=Your_file_name.py
    > set FLASK_ENV=development
    > flask run

它必须只适用于 windows 用户

答案 10 :(得分:0)

不同的shell程序具有设置环境变量的不同方式。这样Flask才能正确发现您的应用程序。

  • Unix Bash / Zsh(Linux,Mac等):

    $ export FLASK_APP=hello
    $ flask run
    
  • Windows CMD:

    > set FLASK_APP=hello
    > flask run
    
  • Windows PowerShell:

    > $env:FLASK_APP = "hello"
    > flask run
    

您可以在Flask docs中找到更多信息。

答案 11 :(得分:0)

这对我有用:

  • 第1步:打开CMD命令提示符
  • 第2步:转到我的python文件所在的目录。
  • 步骤3:在CMD命令提示符下,运行命令setx FLASK_APP sqlAlchemy.py
  • 第4步:关闭终端机
  • 第5步:在CMD命令提示符下运行命令python - m flask run

我有一台Alienware笔记本电脑,并且正在使用Windows 10。

不确定它是否有效,但这是试验与永恒的结合。 根据您所拥有的操作系​​统,解决方案似乎会有所不同。 IT可能是一个环境变量问题,但同样不确定。

- 这里还有其他可能的解决方案,这些解决方案对我不起作用,但我将它们收集为可能。

  • 选项2
  • 设置FLASK_APP = sqlalchemy.py
    • 烧瓶运行
  • 选项3
  • 设置FLASK_APP = app
  • 设置FLASK_ENV =开发
    • 烧瓶运行 希望这会有所帮助。

答案 12 :(得分:0)

我遇到了同样的问题,但是以下命令在PowerShell中对我有用:

python -m flask run

答案 13 :(得分:0)

只需将等于符号的空格删除即可。 设置FLASK_APP = python_file_name.py

答案 14 :(得分:0)

< p>您的代码是正确的。尝试设置命令行变量,如下所示:< / p> < pre>< code> setx FLASK_APP run.py < /代码>< /预> < p>然后运行它:< code> flask run< / code>。< / p>

答案 15 :(得分:0)

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

答案 16 :(得分:-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进口烧瓶     app = Flask(名称

@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语句。