【问题标题】:makefile to start Flask in debug modemakefile 以调试模式启动 Flask
【发布时间】:2018-06-26 02:25:12
【问题描述】:

我想使用单个命令在debug/development mode 中启动Flask。

给定

一个新鲜终端,进入项目目录,激活虚拟环境并运行自定义Makefile:

> cd project
> activate myenv

(myenv) > make

输出

调试模式已关闭。但是,单独运行命令会将其打开(如预期的那样):

(myenv) > set FLASK_APP=app.py
(myenv) > set FLASK_ENV=development
(myenv) > flask run

输出

代码

我创建了以下Makefile,但是运行时,调试模式没有开启:

Makefile

all:
    make env && \
    make debug && \
    flask run

env:
    set FLASK_APP=app.py

debug:
    set FLASK_ENV=development

如何改进Makefile 以在调试模式下运行 Flask?

注意:instructions vary slightly for each operating system;目前,我正在 Windows 命令提示符下对此进行测试。

【问题讨论】:

  • 您是否尝试将all 设置为:make env; make debug; flask run?
  • 在 Windows 上,让它按原样工作的唯一方法是将配方更改为 setx FLASK_APP app.py 等。如果这是您的整个生成文件,但是您使用了错误的工具来完成这项工作,这应该只是一个批处理文件。正如make manual 的第一行所说:“make 实用程序自动确定需要重新编译大型程序的哪些部分,并发出重新编译它们的命令。”
  • @JacobIRR 我过去试过这个。我收到了No rule to make target 'env;. Stop.'
  • @user657267 谢谢。 setx 没用。我最终想扩展文件以在 bash 终端中工作。我会尝试一个批处理文件。

标签: python flask makefile


【解决方案1】:

虽然我仍然相信 Makefile 在其他系统上是一种更通用的方法,但我还是接受了@user657267 的建议,即在 Windows 上使用批处理文件:

代码

# start_flask.bat
:: set environment varibles (app and debug mode)
set FLASK_APP=app.py
set FLASK_ENV=development
flask run
pause

演示

> start_flask.bat

输出

set FLASK_APP=app.py

set FLASK_ENV=development

flask run
 * Serving Flask app "app.py" (lazy loading)
 * Environment: development
 * Debug mode: on
 * Restarting with stat
 * Debugger is active!
 * ...
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

我愿意接受另一种解决方案。

【讨论】:

    【解决方案2】:

    或者,在 Linux 上的 makefile 中,您可以将所有内容放在一行上,而无需 export 关键字。

    debug:
        FLASK_APP=app.py FLASK_ENV=development flask run
    

    根据flask docs。

    【讨论】:

      【解决方案3】:

      Makefile 应该是确定性的。拥有一个可以在两者之间切换的命令并不是最好的方法。

      像这样简单地创建你的makefile:

      FLASK_APP = app.py
      FLASK := FLASK_APP=$(FLASK_APP) env/bin/flask
      
      .PHONY: run
      run:
          FLASK_ENV=development $(FLASK) run
      
      .PHONY: run-production
      run-production:
          FLASK_ENV=production $(FLASK) run
      

      现在你可以做

      make run
      

      或

      make run-production
      

      【讨论】:

      • 你的development 和production 命令调用了什么?
      • 那些不是命令,它们是变量值。 FLASK_ENV 是烧瓶读取的变量。 make run 调用 FLASK_ENV=development FLASK_APP=app.py env/bin/flask run。 make run-production 调用 FLASK_ENV=production FLASK_APP=app.py env/bin/flask run
      猜你喜欢
      • 2011-07-24
      • 1970-01-01
      • 1970-01-01
      • 2014-03-04
      • 2018-04-26
      • 1970-01-01
      • 1970-01-01
      • 2011-09-21
      • 1970-01-01
      相关资源
      最近更新 更多