在 Flask 程序中,通过 flask cli 或者 flask-script
中的 shell 调试是一件非常爽的事情,但是如果不是 flask 程序,比如手写了一个 python server,如果想在程序中实现一个 manage.py 或者 shell,怎么做比较优雅?
我的思路是利用 Ipython 的强大,通过指定 命令,比如 python manage.py shell
来生成指定的上下文并启动 Ipython。
这时候利用了 IPython.start_ipython
方法。
import sys
import IPython
from IPython.terminal.ipapp import load_default_config
from finder.model import User, session
config = load_default_config()
context = create_content()
config.TerminalInteractiveShell.banner1 = '''
Python %s on %s
IPython: %s''' % (sys.version, sys.platform, IPython.__version__,)
IPython.start_ipython(user_ns=context, config=config)
其中的 config 可以实现更多的自定义,参考文档:https://ipython.org/ipython-doc/3/config/intro.html