运行flask时是否有任何选项获取ipython命令提示符

时间:2015-06-23 07:12:27

标签: python tkinter flask ipython

让我试着用例子来解释我的问题。

以下是使用Tkinter的示例GUI代码

from Tkinter import *
root = Tk()
w = Label(root, text="Hello, world!")
w.pack()
root.mainloop()

如果我在Ipython中运行此代码,则在GUI可见时,我不会收到命令提示符。 现在,如果我注释掉行“root.mainloop()”,代码仍然在Ipython中工作,我可以访问命令提示符,以便我可以在代码运行时检查数据。

现在来到Flask案件,

from flask import Flask
app = Flask(__name__)

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

app.run()

当我在Ipython中运行此应用程序时,我没有得到命令提示符。要在代码运行时访问变量,我需要停止烧瓶服务器。

是否有任何选项可以运行烧瓶服务器并可以访问命令提示符?

谢谢

2 个答案:

答案 0 :(得分:1)

我是第二个@NewWorld,会推荐一个调试器。您可以使用IPython调试器在IPython shell中检查程序。例如安装用:

pip install ipdb

然后加载调试器:ipdb.set_trace() like;

@app.route('/')
def hello_world():
    import ipdb; ipdb.set_trace()
    return 'Hello World!'

这将打开一个IPython命令提示符,您可以在代码运行时检查"数据"。

进一步资料:
查看here以开始使用ipdb  This site在调试器内部简要介绍了可用的命令。

答案 1 :(得分:1)

在单独的线程中运行烧瓶应用程序。 试试这个例子: -

from flask import Flask                                                         
import thread
data = 'foo'
app = Flask(__name__)
@app.route("/")
def main():
    return data
def flaskThread():
    app.run()
if __name__ == "__main__":
    thread.start_new_thread(flaskThread,())

在ipython中运行此文件: - “run -i filename.py” 然后你可以访问ipython终端进行检查。