python shell卡在退出处

时间:2014-10-09 16:20:48

标签: python scitools

如果我按特定顺序导入了两个库,Python就不会退出。 我正在使用python库scitoolsfenicstools

在python shell中,以下内容将起作用:

import fenicstools
import scitools
exit()

这不会退出但是挂起(反转导入):

import scitools      # ok
import fenicstools   # ok
exit()               # gets me stuck, I can still exit with Ctrl+C

我可以在两台Ubuntu 14.04机器上重现这一点,现在我完全失去了。我怎么开始调试这样的问题?

背景:我正在使用sumatra来跟踪我的数值模拟。它收集并记录我的项目的依赖项的版本。因此,我无法控制它试图这样做的顺序。结果:它被卡住了。

修改 按照@ ErlVolton的建议,我尝试了pdb。将两个导入按其有问题的顺序放在名为test.py的文件中。

$ pdb test.py
> /home/gallomania/test.py(1)<module>()
-> import scitools
(Pdb) n
> /home/gallomania/test.py(2)<module>()
-> import fenicstools
(Pdb) n
--Return--
> /home/gallomania/test.py(2)<module>()->None
-> import fenicstools
(Pdb) exit

...这使pdb无法退出。

1 个答案:

答案 0 :(得分:0)

使用pdb逐步执行每个操作,并查看其__init__.py

中挂起的代码行fenicstools

https://docs.python.org/2/library/pdb.html

示例:

$ pdb test.py
> /home/cleekley/test/test.py(1)<module>()
-> import sys
(Pdb) s
> /home/cleekley/test/test.py(2)<module>()
-> import time
(Pdb) s
> /home/cleekley/test/test.py(4)<module>()
-> while True:
(Pdb) s
> /home/cleekley/test/test.py(5)<module>()
-> time.sleep(1)
(Pdb) s
> /home/cleekley/test/test.py(4)<module>()
-> while True:
(Pdb) quit