如果我按特定顺序导入了两个库,Python就不会退出。 我正在使用python库scitools和fenicstools。
在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无法退出。
答案 0 :(得分:0)
使用pdb逐步执行每个操作,并查看其__init__.py
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