我使用普通的text1 <- "what"
setNames(c("blue", "red"), paste0(text1, c('_suffix', '_suffix2')))
what_suffix what_suffix2
"blue" "red"
调试python脚本已有2年了,并且运行良好。我只是将命令放在要检查的行上,并且在运行脚本时,我将拥有完整的IPython Shell,具有检查变量,定义函数等的能力。最重要的是,IPython Shell带有变量名制表符。 / p>
现在,我不希望总是使用from IPython import embed; embed()
来定义“暂停行”,而是希望我的python脚本在运行测试时遇到异常时暂停执行。
您如何以这种方式运行from IPython import embed; embed()
pytest
(不,您不会像这样为pytest编写测试,但出于示例目的,这很好。)
# test_somemodule.py
def test_me(some_variable):
x = 1 + some_variable
return x
test_me('I am a string')
(未安装pytest --pdb
)运行错误时,这将打开基本的pdb
shell。但是它没有制表符补全。
pdbpp
-> x = 1 + some_variable
(Pdb) so[<tab_here_produces_tab>]
(已安装 pytest --pdb
)运行错误时,这将打开基本的pdbpp
shell。但是没有制表符补全。
pdbpp
-> x = 1 + some_variable
(Pdb++) so[<tab_here_produces_tab>]
运行错误时,这将打开基本的ipdb
shell。但是没有制表符补全。
pytest --pdb --pdbcls=IPython.terminal.debugger:Pdb
103
104 def test_me(some_variable):
--> 105 x = 1 + some_variable
106 return x
107
ipdb> so[<tab_here_produces_tab>]
按照建议的here尝试了fancycompleter.interact()
,没有运气(与fancycompleter.interact()
,pdb
和ipdb
,pdbpp
甚至{{3} }。)。
fancycompleter v.0.8
正如this patched version所说,pytest --pdb -s
有-s
标志可用。但是,制表符补全仅部分起作用:如果同一起始字符有多个选项,它将打印出可能变量的列表。这缺乏快速选择匹配变量之一的能力(例如,在IPython shell中可用):
有没有办法使变量名制表符完成工作?我更喜欢pytest
或ipdb
而不是香草pdbpp
,但即使使用pdb
的有效解决方案也很好。
答案 0 :(得分:1)
这不是最佳解决方案,但是总比没有好。也许有人会给出更好的答案。这是我所做的
pdbpp
(pip install pdbpp
)制作了具有以下内容的~/.pdbrc
文件(C:\Users\<USER>\.pdbrc
)
alias emb from IPython import embed; embed()
制作的~/.pdbrc.py
文件(C:\Users\<USER>\.pdbrc.py
)具有以下内容
import pdb
class Config(pdb.DefaultConfig):
def setup(self, pdb):
print('Use "emb" to enter IPython shell')
运行pytest --pdb
(与问题相同的.py文件)。从图中可以看出,变量some_variable
的制表符完成。