一直以来,很喜欢方便而强大的ipython调试python,但始终没有机会仔细看高版本的手册,今天偶然在 看到一个调试单独函数的小技巧,顺便浏览了下ipython主站的文档,记录如下。 通常我有个函数要调试,我会在想要的位置插入一个 ipdb的断点。
def oauth(): ''' 测试 oauth 功能 ''' import ipdb; ipdb.set_trace() appid = u"abc" r_url = u"http://www.baidu.com/" scope = u"snsapi_base" url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=%s' 'APPID&redirect_uri=%s&response_type=code&scope=%s&' 'state=STATE#wechat_redirect' % (appid, r_url, scope)如
可以通过设置一个自定义的函数
def debug(f, *args, **kwargs): from IPython.core.debugger import Pdb pdb = Pdb(color_scheme='Linux') return pdb.runcall(f, *args, **kwargs)
实现 debug(oauth)
的效果
1.建立一个py文件
$cd `ipython locate profile`/startup/
建立一个tool.py文件,内容如下:
#!/usr/bin/env python# -*- coding: UTF-8 -*-def set_trace(): from IPython.core.debugger import Pdb Pdb(color_scheme='Linux').set_trace(sys._getframe().f_back)def debug(f, *args, **kwargs): from IPython.core.debugger import Pdb pdb = Pdb(color_scheme='Linux') return pdb.runcall(f, *args, **kwargs)
简单解释一下
- ipython locate profile 命令能够返回 ipython 的配置目录
- 其下的startup目录下的文件会在 ipython启动前运行。