对于我调试的需要, pdb
是相当不错的。 然而,这将是更冷却器(和有益的),如果我能进入ipython
。 这事可能吗?
Answer 1:
有一个ipdb
中嵌入的IPython到标准的pdb项目,所以你可以这样做:
import ipdb; ipdb.set_trace()
通过通常这是安装pip install ipdb
。
ipdb
很短,所以不是easy_installing你也可以创建一个文件ipdb.py
某处你的Python路径上和以下内容粘贴到文件中:
import sys
from IPython.Debugger import Pdb
from IPython.Shell import IPShell
from IPython import ipapi
shell = IPShell(argv=[''])
def set_trace():
ip = ipapi.get()
def_colors = ip.options.colors
Pdb(def_colors).set_trace(sys._getframe().f_back)
Answer 2:
在IPython的0.11,你可以直接在你的代码是这样的IPython嵌入
你的程序可能是这样的
In [5]: cat > tmpf.py
a = 1
from IPython import embed
embed() # drop into an IPython session.
# Any variables you define or modify here
# will not affect program execution
c = 2
^D
这是当你运行它(我随意选择运行现有的IPython会话内。这样在我的经验嵌套IPython的会话可以导致崩溃)会发生什么。
In [6]:
In [6]: run tmpf.py
Python 2.7.2 (default, Aug 25 2011, 00:06:33)
Type "copyright", "credits" or "license" for more information.
IPython 0.11 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: who
a embed
In [2]: a
Out[2]: 1
In [3]:
Do you really want to exit ([y]/n)? y
In [7]: who
a c embed
Answer 3:
相当于
import pdb; pdb.set_trace()
与IPython的是一样的东西:
from IPython.ipapi import make_session; make_session()
from IPython.Debugger import Pdb; Pdb().set_trace()
这是一个有点冗长,但良好的知道,如果你没有安装IPDB。 该make_session
调用需要一次设置的配色方案等,并set_trace
电话可以放在任何地方,你需要打破。
Answer 4:
如果您使用的是更现代版的IPython的(> 0.10.2),您可以使用类似
from IPython.core.debugger import Pdb
Pdb().set_trace()
但是,它可能会更好只使用IPDB
Answer 5:
通常情况下,当我使用IPython中,我打开与它里面的“PDB”命令自动调试。
然后,我在我的脚本所在的目录下的“运行myscript.py”命令来运行我的脚本。
如果我得到一个异常,IPython中停止调试器内的程序。 退房help命令对魔IPython的命令(%魔法)
Answer 6:
我喜欢简单,就是一个班轮粘贴到我的剧本,我想设置一个断点:
__import__('IPython').Debugger.Pdb(color_scheme='Linux').set_trace()
较新的版本可以使用:
__import__('IPython').core.debugger.Pdb(color_scheme='Linux').set_trace()
Answer 7:
貌似模块已经围绕最近有点洗牌。 在IPython的0.13.1以下工作对我来说
from IPython.core.debugger import Tracer; breakpoint = Tracer()
breakpoint() # <= wherever you want to set the breakpoint
虽然唉,这一切都非常的qtconsole一文不值 。
Answer 8:
IPython的较新版本的嵌入和嵌套的IPython会话到任何Python程序提供了一个简单的机制。 你可以按照下面的食谱嵌入IPython的会议:
try:
get_ipython
except NameError:
banner=exit_msg=''
else:
banner = '*** Nested interpreter ***'
exit_msg = '*** Back in main IPython ***'
# First import the embed function
from IPython.frontend.terminal.embed import InteractiveShellEmbed
# Now create the IPython shell instance. Put ipshell() anywhere in your code
# where you want it to open.
ipshell = InteractiveShellEmbed(banner1=banner, exit_msg=exit_msg)
然后使用ipshell()
只要你想放到一个IPython的外壳。 这将允许你嵌入(甚至鸟巢)IPython的译员在你的代码。
Answer 9:
从IPython的文档 :
import IPython.ipapi
namespace = dict(
kissa = 15,
koira = 16)
IPython.ipapi.launch_new_instance(namespace)
将编程推出一个IPython的壳。 显然,在值namespace
字典都只是虚值-它可能会更有意义用locals()
在实践中。
请注意,你必须在这个硬编码; 它不会在上班的路上pdb
一样。 如果这是你想要的,DoxaLogos的回答可能更喜欢你在找什么。
Answer 10:
快速和简单的方法:
from IPython.Debugger import Tracer
debug = Tracer()
然后就写
debug()
无论你想开始调试程序。
Answer 11:
我不得不谷歌这样一对夫妇,如果时间过去的几天里因此增加一个答案......有时真的很高兴能够运行一个脚本通常只有拖放到IPython中/ IPDB上的错误,而不必把ipdb.set_trace()
断点到代码
ipython --pdb -c "%run path/to/my/script.py --with-args here"
(第一pip install ipython
和pip install ipdb
当然)
Answer 12:
这是非常简单的:
ipython some_script.py --pdb
它需要IPython的安装,通常这个工程: pip install ipython
我用ipython3代替IPython中,所以我知道这是一个最近的Python版本。
这是简单的记住,因为你只需使用IPython的,而不是蟒蛇,并添加--pdb到底。